【发布时间】:2017-05-04 17:28:57
【问题描述】:
我想从以下字符串中提取州缩写(2 个字母)和邮政编码(4 个或 5 个数字)
address <- "19800 Eagle River Road, Eagle River AK 99577
907-481-1670
230 Colonial Promenade Pkwy, Alabaster AL 35007
205-620-0360
360 Connecticut Avenue, Norwalk CT 06854
860-409-0404
2080 S Lincoln, Jerome ID 83338
208-324-4333
20175 Civic Center Dr, Augusta ME 4330
207-623-8223
830 Harvest Ln, Williston VT 5495
802-878-5233
"
对于邮政编码,我尝试了一些我在这里找到的方法,但主要是因为 5 个数字街道地址或只有 4 个数字的邮政编码没有奏效
text <- readLines(textConnection(address))
library(stringi)
zip <- stri_extract_last_regex(text, "\\d{5}")
zip
library(qdapRegex)
rm_zip3 <- rm_(pattern="(?<!\\d)\\d{5}(?!\\d)", extract = TRUE)
zip <- rm_zip3(text)
zip
[1] "99577" "1670" "35007" "0360" "06854" "0404" "83338" "4333" "4330" "8223" "5495" "5233" NA
对于州缩写,我不知道如何提取
任何帮助表示赞赏!提前致谢!
修改 1:包括电话号码
【问题讨论】:
-
您想以编程方式或仅使用正则表达式来完成它?我的意思是它也可以通过记事本++来完成
-
states <- str_extract(text, "\\b[A-Z]+(?=\\s+\\d{5}$)") -
谢谢@Rahul。两者都会很棒。至少你能告诉我如何用 Notepad++ 做到这一点吗?
-
@WiktorStribiżew:谢谢!最后两行我仍然有错误
"AK" "AL" "CT" "ID" NA NA -
@IloveCatandPython 将
{5}修改为{4,5},如下所示:states <- str_extract(text, "\\b[A-Z]+(?=\\s+\\d{5}$)")
标签: r regex text-extraction zipcode