Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从字符串中提取地址街道的正则表达式_Python_Regex - Fatal编程技术网

Python 从字符串中提取地址街道的正则表达式

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

给定示例文本,我想提取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 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抱歉,我无法复制,谢谢您的指导,我将尝试根据我的要求进行一些更改。