如果标题不是很具描述性,我很抱歉。我不知道如何用几句话总结我的问题。
这是我的问题。我正在清理地址,其中一些正在造成一些问题。
我有一份名为patterns
的分隔符(大道,街道,道路,地点等等)列表。
假设我有这个地址,例如:SUITE 1603 200 PARK AVENUE SOUTH NEW YORK
我希望输出为SUITE 200 PARK AVENUE SOUTH NEW YORK
我有什么方法可以看看在我的一个模式之前是否有两批数字(在这种情况下是1603
和200
),如果是这样,剥去第一批我的字符串中的数字?即删除1603
并保留200
。
更新:我已将此行添加到我的代码中:
address = re.sub("\d+", "", address)
但它目前正在移除所有数字。我认为通过放置,1个地址之后它只会删除第一次出现,但事实并非如此
答案 0 :(得分:3)
如果您想在<34;分隔符&#34;之一时应用此替代 如果有两个数字,则使用单词 ,您可以使用更高级的正则表达式。
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
答案 1 :(得分:0)
您对自己想要做的事情的描述不是很清楚,但如果我理解正确,您希望删除第一次出现的数字序列吗?
您可以在不使用正则表达式的情况下执行此操作,
s = 'SUITE 1603 200 PARK AVENUE SOUTH NEW YORK'
l = s.split(' ')
for i, w in enumerate(l):
for c in w:
if c.isdigit():
del l[i]
break
print ' '.join(l)
输出: >>> SUITE 200 PARK AVENUE SOUTH NEW YORK