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
试图用
拆分我的地址字符串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