我正在使用以下“最快”方式从字符串中删除标点符号:

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"

10-08 03:11