Python正则如何删除以反斜杠开头的字符串 推特情感分析预处理问题
你尝试的方案不生效核心有两个原因:
- 你看到的
\xe2\x9c\x8c这类内容不是文本中真实存在以\开头的字符串,而是UTF-8字节序列在未完全解码时的转义展示形式,实际内存中不存在单独的\字符,匹配反斜杠的正则自然无法命中。 - 你写的filter逻辑里判断条件是
x[0]!='\/',这里写的是正斜杠,不是你要匹配的反斜杠,同时按空格切分的逻辑也无法匹配和其他字符连在一起的反斜杠开头内容。
方案1:先补全编码解码,再过滤无效字符
这是处理这类推特乱码的首选方案,先把转义的字节序列还原成正常Unicode,再过滤不需要的特殊符号:
# 第一步:还原转义字节为正常Unicode字符 text = text.encode('latin1').decode('utf-8') # 第二步:过滤所有非目标字符(可根据需求调整保留范围,这里保留中英、数字、常用标点、空格) text = re.sub(r'[^\u4e00-\u9fa5a-zA-Z0-9,。!?,.!?\s]', '', text)
方案2:确实需要匹配字面量反斜杠开头的内容时的正则写法
如果确认你的文本中确实存在字面意义的\开头的字符串,Python正则匹配反斜杠需要做两层转义,正确写法如下:
# 匹配所有反斜杠开头的连续非空白字符,替换为空 text = re.sub(r'\\\S*', '', text)
内容的提问来源于stack exchange,提问作者V5NEXT
相关产品推荐
相关产品推荐

