如果标题不是很描述性,我感到很抱歉。我不知道如何用几句话概括我的问题。
这是我的问题。我正在清理地址,其中一些正在引起某些问题。
我有一个名为patterns
的定界符列表(道路,街道,道路,地方等)。
假设我有这个地址,例如:SUITE 1603 200 PARK AVENUE SOUTH NEW YORK
我希望输出为SUITE 200 PARK AVENUE SOUTH NEW YORK
我能以某种方式查看在我的一个模式之前是否有2批数字(在本例中为1603
和200
),如果有,从字符串中剥离第一批数字?即删除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