我正在使用以下“最快”方式从字符串中删除标点符号:
text = file_open.translate(str.maketrans("", "", string.punctuation))
但是,它会从令牌中删除所有标点符号,包括撇号,例如
shouldn't
,将其变为shouldnt
。问题是我将NLTK库用于停用词,而标准停用词不包括不带撇号的示例,而是包含了如果我使用NLTK标记程序拆分文本时NLTK会生成的标记。例如,对于
shouldnt
,包含的停用词是shouldn, shouldn't, t
。我可以添加其他停用词,也可以从NLTK停用词中删除撇号。但是这两种解决方案似乎都不是“正确的”,因为我认为在进行标点符号清理时应留撇号。
快速清洁标点符号时,是否可以留下撇号?
最佳答案
>>> from string import punctuation
>>> type(punctuation)
<class 'str'>
>>> my_punctuation = punctuation.replace("'", "")
>>> my_punctuation
'!"#$%&()*+,-./:;<=>?@[\\]^_`{|}~'
>>> "It's right, isn't it?".translate(str.maketrans("", "", my_punctuation))
"It's right isn't it"