0

私の質問はばかげているように見えるかもしれません。しかし、私は Python の新人なので、助けてください。

ストップワード削除関数に行を渡す必要があります。それは正常に動作します。しかし、私の問題は、関数の戻り値が単語を追加していることです。私は次のようにそれをしたい:

line = " I am feeling good , but I cant talk"

ストップワードをしましょう"I,but,cant"

関数に渡した後、私の出力は次のようになります"am feeling good , talk"。私が今得ているのは[['am','feeling','good','talk']].

助けて。

4

3 に答える 3

0

そのリストを文字列として取得するには、次のようにします。

>>> out = [['am','feeling','good','talk']]
>>> " ".join(out[0])
'am feeling good talk'
>>>

ただし、これはあなたが望むものだと思います:

>>> line = " I am feeling good , but I cant talk"
>>> [word for word in line.split() if word not in ("I", "but", "cant")]
['am', 'feeling', 'good', ',', 'talk']
>>> lst = [word for word in line.split() if word not in ("I", "but", "cant")]
>>> " ".join(lst)
'am feeling good , talk'
>>>

ここで重要な部分は、、、str.joinおよびstr.splitリスト内包表記です。

于 2013-11-06T21:40:06.703 に答える
0
line = " I am feeling good , but I cant talk"
stop_words={'I','but','cant'}
li=[word for word in line.split() if word not in stop_words] 
print li
# prints ['am', 'feeling', 'good', ',', 'talk']
print ' '.join(li)
# prints 'am feeling good , talk'
于 2013-11-06T21:40:19.120 に答える
0

これは、リスト内包表記を使用して実現できます。

def my_function(line, stopwords):
    return [word for word in line.split() if word not in stopwords]

stopwords = ['i', 'but', 'cant']
line = " I am feeling good , but I cant talk"
my_function(line, stopwords)

これは、以下のコードとほぼ同じです。

def my_function(line, stopwords):
        result = []
        for i in line.split(): #loop through the lines
        if i not in stopwords: #Check if the words are included in stopwords
            result.append(i)

結果:

['am', 'feeling', 'good,', 'talk']

お役に立てれば!

于 2013-11-06T21:40:25.717 に答える