-1

试图用

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"

没有成功。我觉得错过了什么

4

3 回答 3

1

您可以使用列表推导一次将其全部拆分。它将返回一个列表,其中每个项目都是使用 apts 中的不同关键字进行的一种拆分。

splits = [fulladdress.split(apt) for apt in apts]
于 2015-07-08T17:11:44.750 回答
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
于 2015-07-08T17:53:05.713 回答
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
于 2015-07-08T18:25:08.717 回答