-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

あなたが達成しようとしていることを理解するのは難しいです。かなり多くの異なる送信元アドレスがあり、それぞれから最初の行を抽出しようとしていると思います。理想的には、より正確なフィルターを提供するために、さらにいくつかの例を見ることができればより簡単になります.

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

一致する検索パラメーターの 1 つを見つけようとし、その時点までのアドレスを返すだけです。コードは次を返します。

213 house rd
于 2015-07-08T18:25:08.717 に答える
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 に答える