尝试用
分割我的地址字符串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"
没有成功。我想错过一些东西
答案 0 :(得分:1)
您可以使用list comprehension将所有内容全部拆分。它将返回一个列表,其中每个项目都是使用apts中的不同关键字进行拆分。
splits = [fulladdress.split(apt) for apt in apts]
答案 1 :(得分:0)
你可以使用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
答案 2 :(得分:0)
很难理解你想要实现的目标。我猜你有很多不同的源地址,并试图从每个地址中提取第一行。理想情况下,如果我们能够看到更多示例来为您提供更精确的过滤器,那将会更容易。
我猜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
它只是尝试找到一个匹配的搜索参数,并返回到该点的地址。代码返回:
213 house rd