Python 用单词列表拆分字符串

Python split string with a list of words

试图用

拆分我的地址字符串
apts = {'apt','apartment','unit','spc','space','trlr','lot','A','B','C','D'}

有没有比

更好的方法
fulladdress.split("apt")
fulladdress.split("apartment")
...
...

正在尝试

def split_all(text, dict):
for i in dict():
    text = text.split(i)
return text

s = split_all(s,apts)

"fulladdress = "213 house rd apt 1011" 我想得到 "213 house rd 1011"

没有成功。感觉少了什么

您可以使用list comprehension一次拆分。它将 return 一个列表,其中每个项目都是在 apts 中使用不同关键字的一种拆分。

splits = [fulladdress.split(apt) for apt in apts]

您可以使用 re 使用单词边界编译模式,您不能拆分,因为您将拆分子字符串:

s = "213 house rd apt 1011"
apts = ['apartment','unit','space',"spc","apt",'trlr','lot','A','B','C','D']
import re
r = re.compile(r"\b|\b".join(apts))

print(r.sub("", s))
213 house  rd  1011

很难理解您要实现的目标。我猜你有很多不同的源地址,并试图从每个源地址中提取第一行。理想情况下,如果我们可以看到更多示例来为您提供更精确的过滤器,那将会更容易。

我猜 apts 列出了您确定的第一行末尾可能的定界符点。如果是这种情况,那么以下将是您可以遵循的直接解决方案:

fulladdress = "213 house rd apt 1011"
apts = ['apt','apartment','unit','spc','space','trlr','lot','A','B','C','D','house']
first_part = ""

for search in apts:
    index = fulladdress.find(" %s " % search)

    if index != -1:
        first_part = fulladdress[:index]
        break

print first_part

它只是试图找到一个匹配的搜索参数和 returns 到那个点的地址。代码returns:

213 house rd