Python文本挖掘情感分析:如何保留!、?并移除其余标点
正则调整方案
你当前使用的正则[^a-zA-Z]会匹配所有非英文字母的字符并替换为空格,因此会把!、?在内的所有标点全部移除。要实现仅保留!和?、移除其余标点的效果,只需要把这两个符号加入正则的否定匹配字符集即可。
修正后的代码
单条文本字符串处理直接用以下代码:
import re text = re.sub(r"[^a-zA-Z!?]", ' ', text)
注意事项
- 正则前加
r声明Python原生字符串,是写正则的标准写法,可以避免转义字符冲突 - 字符集
[^a-zA-Z!?]的匹配逻辑:匹配所有不属于英文字母、不属于感叹号、不属于问号的字符,将这类字符替换为空格,完全匹配你的处理需求 - 原代码里的
.format(a)没有实际作用,当前匹配规则不存在需要格式化填充的占位符,直接删除即可 - 如果你存储文本的
text是字符串列表,不能直接传入re.sub处理,需要遍历逐句处理,参考代码:
processed_text = [re.sub(r"[^a-zA-Z!?]", ' ', single_sentence) for single_sentence in text]
内容的提问来源于stack exchange,提问作者Gaurav Luitel
相关产品推荐
相关产品推荐

