使用正则表达式和 python 移动地址块中的城市,添加符号
Use regex and python to move city in address block, add ampersand
我的电子表格中的地址格式不正确,我需要它们相当适合用于地理编码。我已经尝试了一些 Python 库来解析地址,但他们无法找出其中的一些。例如,
"N MONON AVE FRANCESVILLE W YELLOW ST"
他们所有人的州都是印第安纳州,我可以毫无问题地将其连接到提交的字符串中。在上面的示例中,它是一个交叉点,地理编码器接受为:
"N MONON AVE & W YELLOW ST FRANCESVILLE"
我的想法是,最简单的方法是找到街道类型(Ave、Dr、Ct 等)后的第一个词,将其移至末尾,并在其位置添加一个符号。
我有这段代码,它的效率可能低得可怕,但它确实只捕获了第一种街道类型;在上面的例子中,它会输出 AVE.
/(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)[^(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)]/i
我不确定该怎么做是告诉它抓住第一个街道类型之后的任何单词。从那里,我应该能够使用 re.search 和 .group[n] 来提取城市,并将其放入已解析的字符串中。
您可以使用
rx = re.compile(r"(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)\s+(\S+)\s*(.*)", re.I)
加法是\s+(\S+)\s*(.*)
:1+ 个空格,1+ 个非空格((\S+)
,第 2 组),0+ 个空格(\s*
)和任何 0+ 个其他字符比换行字符 (.*
, 第 3 组).
import re
rx = re.compile(r"(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)\s+(\S+)\s*(.*)", re.I)
s = "N MONON AVE FRANCESVILLE W YELLOW ST"
result = re.sub(rx, r' & ', s)
print(result)
import re
s = "N MONON AVE FRANCESVILLE W YELLOW ST"
regex = r"(.*) (Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St) ([A-Za-z]*) (.*)"
result = re.sub(regex, r" & ", s, flags=re.I)
print(result)
我的电子表格中的地址格式不正确,我需要它们相当适合用于地理编码。我已经尝试了一些 Python 库来解析地址,但他们无法找出其中的一些。例如,
"N MONON AVE FRANCESVILLE W YELLOW ST"
他们所有人的州都是印第安纳州,我可以毫无问题地将其连接到提交的字符串中。在上面的示例中,它是一个交叉点,地理编码器接受为:
"N MONON AVE & W YELLOW ST FRANCESVILLE"
我的想法是,最简单的方法是找到街道类型(Ave、Dr、Ct 等)后的第一个词,将其移至末尾,并在其位置添加一个符号。
我有这段代码,它的效率可能低得可怕,但它确实只捕获了第一种街道类型;在上面的例子中,它会输出 AVE.
/(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)[^(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)]/i
我不确定该怎么做是告诉它抓住第一个街道类型之后的任何单词。从那里,我应该能够使用 re.search 和 .group[n] 来提取城市,并将其放入已解析的字符串中。
您可以使用
rx = re.compile(r"(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)\s+(\S+)\s*(.*)", re.I)
加法是\s+(\S+)\s*(.*)
:1+ 个空格,1+ 个非空格((\S+)
,第 2 组),0+ 个空格(\s*
)和任何 0+ 个其他字符比换行字符 (.*
, 第 3 组).
import re
rx = re.compile(r"(Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St)\s+(\S+)\s*(.*)", re.I)
s = "N MONON AVE FRANCESVILLE W YELLOW ST"
result = re.sub(rx, r' & ', s)
print(result)
import re
s = "N MONON AVE FRANCESVILLE W YELLOW ST"
regex = r"(.*) (Avenue|Lane|Road|Boulevard|Drive|Street|Ave|Dr|Rd|Blvd|Ln|St) ([A-Za-z]*) (.*)"
result = re.sub(regex, r" & ", s, flags=re.I)
print(result)