1

Python で分割と結合を理解していると思っていましたが、うまくいきません。

の値を言ってみましょうinp[17] = 'Potters Portland Oregon school of magic'

# a string of data I am pulling from a csv file, the data comes through just fine.
loc = inp[17] 

l = loc.split(' ') # I want to split by the space

# I want to filter out all these words say they don't always 
# come as "School of magic" so I cant just filter that out they 
# could be mixed around at times.

locfilter = ['Potters', 'School', 'of', 'magic']     
locname = ' '.join([value for value in l if l not in locfilter])

この時点で、私のlocname変数にはそれしか含まれていないはずですがPortland Oregon、まだ'Potters Portland Oregon school of magic'除外されていません。

問題は私のlocname =行にあると思います。

助けてくれてありがとう。

4

1 に答える 1

5

ここでの問題はsplitorjoinではなく、リスト内包表記における条件のばかげた間違いです (私たち全員が常に犯すようなばかげた間違いです):

locname = ' '.join([value for value in l if l not in locfilter])

明らかに にlはありませんlocfilter。そして、それを修正すると:

locname = ' '.join([value for value in l if value not in locfilter])

それはうまくいきます:

'Portland Oregon school'

'school'まだ出力の一部であることに注意してください。それは;'school'になかったからです。だった。大文字と小文字を区別せずに一致させたい場合:locfilter'School'

lowerfilter = [value.lower() for value in locfilter]
locname = ' '.join([value for value in l if value.lower() not in lowerfilter])

そしていま:

'Portland Oregon'
于 2013-01-29T02:06:30.430 に答える