Python拆分字符串列表

时间:2015-07-08 17:03:02

标签: python string split addressing

尝试用

分割我的地址字符串
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"

没有成功。我想错过一些东西

3 个答案:

答案 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