使用正则表达式提取单元号

时间:2015-10-15 17:17:27

标签: python regex

我有一个描述列表,我想使用正则表达式

提取单位信息

我在正则表达式上看了video,这就是我得到的

import re
x = ["Four 10-story towers - five 11-story residential towers around Lake Peterson - two 9-story hotel towers facing Devon Avenue & four levels of retail below the hotels",
     "265 rental units",
     "10 stories and contain 200 apartments",
     "801 residential properties that include row homes, town homes, condos, single-family housing, apartments, and senior rental units",
     "4-unit townhouse building (6,528 square feet of living space & 2,755 square feet of unheated garage)"]
unit=[]
for item in x:
    extract = re.findall('[0-9]+.unit',item)
    unit.append(extract)
print unit

这适用于单元格中的字符串结尾,但我也使用'rental unit','apartment','bed'和其他字符串结尾,如本例所示。 我可以使用多个正则表达式执行此操作,但是有一种方法可以在一个正则表达式中执行此操作吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

只要您不怕制作一个可怕的长正则表达式,您就可以使用以下内容:

compiled_re = re.compile(ur"(\d*)-unit|(\d*)\srental unit|(\d*)\sbed|(\d*)\sappartment")
unit = []
for item in x:
    extract = re.findall(compiled_re, item)
    unit.append(extract)

您必须使用新的“|”扩展正则表达式模式然后是每种可能的单元号引用类型的搜索模式。不幸的是,如果条目中的一致性非常低,这种方法将基本上无法使用。

另外,我可以建议使用像Regex101这样的正则表达式测试程序。它确实有助于确定你的正则表达式是否能达到你想要的效果。