Regex 文本挖掘中的街道地址清理
寻找一种方法来删除我目前的文字街道地址。是否有一个正则表达式可以检测数字范围内的文本?我的想法是,我有一个邮政编码,通常在地址的开头有一个数字 加利福尼亚州洛杉矶帕克斯街1234号,邮编90001 我的主要问题是,当我进行其他清理并在集合中查找其他单词时,我想从数据集中删除街道名称Regex 文本挖掘中的街道地址清理,regex,r,text-mining,Regex,R,Text Mining,寻找一种方法来删除我目前的文字街道地址。是否有一个正则表达式可以检测数字范围内的文本?我的想法是,我有一个邮政编码,通常在地址的开头有一个数字 加利福尼亚州洛杉矶帕克斯街1234号,邮编90001 我的主要问题是,当我进行其他清理并在集合中查找其他单词时,我想从数据集中删除街道名称 我正在使用Rstudio进行清理。这将返回一个字符向量。阅读正则表达式时,使用paren将其分为三个捕获组:第一个是任意数量的连续数字,后面是任意数量的非数字,后面是5个数字。仅返回第一个和第三个,中间有空格(如果有
我正在使用Rstudio进行清理。这将返回一个字符向量。阅读正则表达式时,使用paren将其分为三个捕获组:第一个是任意数量的连续数字,后面是任意数量的非数字,后面是5个数字。仅返回第一个和第三个,中间有空格(如果有匹配项),如果没有匹配项,则不进行更改
> gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test)
[1] "1234 90001" "9876 94501"
它需要进一步解析才能返回一组数值向量
> scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test), what=list("", "") )
Read 2 records
[[1]]
[1] "1234" "9876"
[[2]]
[1] "90001" "94501"
也许最好将拉链读入字符(因为您希望保留前导零),但可以通过更改什么
列表类型将街道编号转换为数字:
> scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test), what=list( numeric(), "") )
Read 2 records
[[1]]
[1] 1234 9876
[[2]]
[1] "90001" "94501"
要使其更有用,请执行以下操作:
> setNames( data.frame( scan( text=gsub("([0-9]*)(\\D*)(\\d{5})", "\\1 \\3", test),
what=list( numeric(), "") ) ,
stringsAsFactors=FALSE),
c( "StrtNumber", "ZIP") )
Read 2 records
StrtNumber ZIP
1 1234 90001
2 9876 94501
如果您的地址在结构上不完全相同,那么地理编码可能是您的最佳选择:预期输出是什么<代码>1234 90001?这就是我的目标。每行文本中都混合了不同的信息。有时只是一次谈话的总结。有时这是一种行为,例如“约翰将在加利福尼亚州洛杉矶帕克斯街1234号联系,邮编90001。”