2011-04-01 33 views
5

Pythonで正規表現を使用して句読点/数字を削除するコードがありましたが、コードを少し変更して停止リストが機能するようにしなければなりませんでした。とにかく、今では句読点は削除されていません。そして、率直に言って、私は理由については困惑しています。それは働いていない理由について文章の問題から句読点/数字を削除する

import re 
import nltk 

# Quran subset 
filename = raw_input('Enter name of file to convert to ARFF with extension, eg. name.txt: ') 

# create list of lower case words 
word_list = re.split('\s+', file(filename).read().lower()) 
print 'Words in text:', len(word_list) 
# punctuation and numbers to be removed 
punctuation = re.compile(r'[-.?!,":;()|0-9]') 
for word in word_list: 
    word = punctuation.sub("", word) 
print word_list 

任意のポインタは素晴らしいことだ、私はそれはおそらく途方もなく愚かなものですので、パイソンには専門家です。ありがとう。

答えて

7

変更

for word in word_list: 
    word = punctuation.sub("", word) 

上記for-loopwordに割り当て

word_list = [punctuation.sub("", word) for word in word_list]  

に、単にこの一時変数によって参照される値を変更します。 word_listは変更されません。

3

あなたの単語リストは更新されていません。 wordword_list内の文字列オブジェクトへの参照としてオフを開始しますが、割り当てはsub関数によって返された新しい文字列オブジェクトに名前wordを再バインドすることを忘れないでください

for i, word in enumerate(word_list): 
    word_list[i] = punctuation.sub("", word) 

を試してみてください。最初に参照されたオブジェクトは変更されません。

関連する問題