Python 从字符串中提取地址街道的正则表达式
给定示例文本,我想提取Address Street(星号之间的文本)。 使用下面的正则表达式,我能够为大多数句子提取Address Street,但对于text4和text5主要失败Python 从字符串中提取地址街道的正则表达式,python,regex,Python,Regex,给定示例文本,我想提取Address Street(星号之间的文本)。 使用下面的正则表达式,我能够为大多数句子提取Address Street,但对于text4和text5主要失败 regex = r"(^[0-9]+[\s\-0-9,A-Za-z]+)" text1 = *9635 E COUNTY ROAD, 1000 N*. text2 = *8032 LIBERTY RD S*. text3 = *2915 PENNSYLVANIA AVENUE* 40 Othe
regex = r"(^[0-9]+[\s\-0-9,A-Za-z]+)"
text1 = *9635 E COUNTY ROAD, 1000 N*.
text2 = *8032 LIBERTY RD S*.
text3 = *2915 PENNSYLVANIA AVENUE* 40 Other income (loss) 15 Alternative minimum tax (AMT) ilems
A 2,321
text4 = *2241 Western Ave*. 10 Other income loss 15 — Altemative minimum tax AMT itams
text5 = *450 7TH STREET, APT 2-M*
text6 = *9635 East County Road 1000 North*
My code---
for k,v in val.items():
if k == "Shareholder Address Street":
text = " ".join(v)
pattern1 = r"(^[0-9]+[\s\-0-9,A-Za-z]+)"
addressRegex = re.compile(pattern1)
match = addressRegex.search(text)
if match is not None:
delta = []
delta.append("".join(match.group(0)))
val[k] = delta
任何人都可以建议对上述正则表达式进行更改,因为它可以很好地用于大多数文档吗?使用
^\d+(?:[\t][\w,-]+)*
看
解释
--------------------------------------------------------------------------------
^字符串的开头
--------------------------------------------------------------------------------
\d+数字(0-9)(1次或多次(匹配
尽可能多的钱)
--------------------------------------------------------------------------------
(?:组,但不捕获(0次或更多次)
(匹配尽可能多的金额):
--------------------------------------------------------------------------------
[\t]任何字符:“”,“\t”(制表符)
--------------------------------------------------------------------------------
[\w,-]+的任何字符:字字符(a-z,
A-Z,0-9,,,,,,,,-(1次或多次
(匹配尽可能多的金额)
--------------------------------------------------------------------------------
)*分组结束
您需要向我们展示文本中可能出现的各种形式的地址。否则,当你透露一些边缘情况时,下面给出的任何答案都可能立即无效。目前,我得到了这6种不同形式的地址。@RevolverRakk你能分享你正在使用的代码吗?@第四只鸟,我分享了我的代码片段,我正在应用正则表达式提取地址街道并存储在字典中。谢谢你的回答。Regex在在线测试仪中运行良好,但text3(即“2915宾夕法尼亚大道40其他收入(损失)…”在我的IDE中测试时失败了吗?&返回整个字符串而不是“2915宾夕法尼亚大道”@revolvrakk抱歉,我无法复制,谢谢您的指导,我将尝试根据我的要求进行一些更改。