我有一些代码可以很好地使用 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
任何关于为什么它不起作用的指示都会很棒,我不是 python 专家,所以它可能是愚蠢得可笑的东西。谢谢。
最佳答案
改变
for word in word_list:
word = punctuation.sub("", word)
到
word_list = [punctuation.sub("", word) for word in word_list]
在上面的for-loop
中对word
的赋值,只是简单的改变了这个临时变量引用的值。它不会改变 word_list
。
关于python - 从文本问题中删除标点符号/数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5512765/