我有一个文本文件,我正在逐行阅读。在每一行中,如果有特殊字符,那么我将删除特殊字符,为此,我正在使用正则表达式的帮助。
fh = open(r"abc.txt","r+")
data = fh.read()
#print re.sub(r'\W+', '', data)
new_str = re.sub('[^a-zA-Z0-9\n\.;,?!$]', ' ', data)
所以,在我的数据中,我只保留字母数字字和少数特殊符号[。;,?!$],但除此之外我还想要欧元符号(€),磅(£ ),日元(¥)和卢比符号(₹)。但是这些在ASCII字符中不存在,所以当我将它们包含在我的正则表达式中时,如 - re.sub('[^ a-zA-Z0-9 \ n。;,?!$€¥]' ,',数据)它会显示错误消息。 SyntaxError:第23行的文件preprocess.py中的非ASCII字符'\ xe2',但未声明编码
答案 0 :(得分:0)
您可以使用Unicode character escapes。例如,上面的Euro character可以表示为\u20ac
。四位数字是Unicode编号,与编码类型无关。在示例正则表达式中,这可能如下所示:
[^a-zA-Z0-9\u20ac]
答案 1 :(得分:0)
也许不是解决方案,但可能是部分解决方案。将此作为每个Python 2文件的前两行:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
这使Python 2切换到UTF-8(unicode)模式。在Python 3中,这是默认值。