【发布时间】:2018-07-24 15:07:46
【问题描述】:
我有一个文本文件,我正在逐行阅读。在每一行中,如果有特殊字符,那么我将删除特殊字符,为此,我正在使用正则表达式的帮助。
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.;,?!$€₹¥]' , ' ', data) 它会给出错误消息。 SyntaxError:第 23 行文件 preprocess.py 中的非 ASCII 字符“\xe2”,但未声明编码
【问题讨论】:
-
您使用的是什么编码?你使用的是 UTF-8 吗?
-
stackoverflow.com/questions/393843/… 看起来您的编码不正确
-
一种解决方法可能是指定一个 Unicode 范围 (see here)。但是,如果您想要保留的字符不能整齐地放在一个范围内,那可能就不干净了。
-
请说明您使用的是 Python 2 还是 Python 3。如果是 Python 2,您使用的是文件顶部的编码行吗?
标签: python regex ascii non-ascii-characters