如果标题不是很描述性,我感到很抱歉。我不知道如何用几句话概括我的问题。

这是我的问题。我正在清理地址,其中一些正在引起某些问题。

我有一个名为patterns的定界符列表(道路,街道,道路,地方等)。

假设我有这个地址,例如:SUITE 1603 200 PARK AVENUE SOUTH NEW YORK

我希望输出为SUITE 200 PARK AVENUE SOUTH NEW YORK

我能以某种方式查看在我的一个模式之前是否有2批数字(在本例中为1603200),如果有,从字符串中剥离第一批数字?即删除1603并保留200

更新:我已将以下行添加到我的代码中:

address = re.sub("\d+", "", address),但是当前正在删除所有数字。我认为通过在地址后加上,1只会删除第一次出现的情况,但事实并非如此

最佳答案

如果仅当使用一个“分隔符”单词且仅当有两个数字时才应用此替换,则可以使用更高级的正则表达式。

import re

pattern = r"\d+ +(\d+ .*(STREET|AVENUE|ROAD|WHATEVER))"
input = "SUITE 1603 200 PARK AVENUE SOUTH NEW YORK"
output = re.sub(pattern, "\\1", input)

print(output) #SUITE 200 PARK AVENUE SOUTH NEW YORK

09-10 12:29
查看更多