Python-如何从字符串中提取地址或如何在不同的行之前获取单词?

我的样本内容如下

content ="""
Dear Customer,

 Detail of service affected: 

 Bobs Builders
 Retail park 
 The Aavenue
 London
 LDN 4DX


 Start Time & Date: 04/01/2017 00:05 
 Completion Time & Date: 04/01/2017 06:00 

 Details of Work: 
 ....

我已经用

postcodes =  re.findall(r"[A-Z]{1,2}[0-9R][0-9A-Z]? [0-9][A-Z]{2}", content)

我也想从此内容中获取城市信息,这是否有可能?我是否需要首先提供城市清单?然后核对一下?

还是有办法在邮递区号之前打上电话?因为地址总是以这种方式发送.

我可以使用邮政编码正则表达式在邮政编码之前得到单词吗?

谢谢

最佳答案

这是一个例子:

import re
postcodes =  re.findall(r"(\w+)\s+([A-Z]{3} \d[A-Z]{2})", content)

print postcodes
# => [('London', 'LDN 4DX')]

您有2组,第一个是邮政编码后的单词(可能在另一行),第二个是邮政编码本身.

邮政编码正则表达式已简化,以使示例更具可读性.

如果要匹配任何英国代码,则here是一个很好的参考.

您提到的正则表达式与LDN 4DX不匹配.添加?为[0-9R]将:

postcodes =  re.findall(r"[A-Z]{1,2}[0-9R]?[0-9A-Z]? [0-9][A-Z]{2}", content)