我在尝试查找正则表达式中指定的文本时遇到问题。 一切都很好,但是当我在我的正则表达式中添加“\£”时,它开始引起问题。我得到语法错误。文件 (...) 中的“非 ASCII 字符“\xc2”但未声明编码...
我试图通过使用来解决这个问题
import sys
reload(sys) # to enable `setdefaultencoding` again
sys.setdefaultencoding("UTF-8")
但这并没有帮助。我只想构建正则表达式并在那里使用井号。标志 re.Unicode 标志没有帮助,将字符串保存为 unicode (pat) 没有帮助。有没有解决这个正则表达式的方法?我只想构建正则表达式并在那里使用井号。感谢您的帮助。
k = text.encode('utf-8')
pat = u'salar.{1,6}?([0-9\-,\. \tkFFRroOMmTtAanNuUMm\$\&\;\£]{2,})'
pattern = re.compile(pat, flags = re.DOTALL|re.I|re.UNICODE)
salary = pattern.search(k).group(1)
print (salary)
即使我评论(输入“#”并跳过所有这些行,错误仍然存在。也许它与 re.library 无关,但与我的设置有关?
最佳答案
错误信息表示 Python 无法猜测您使用的是哪个字符集。它还告诉您可以通过告诉它脚本的编码来修复它。
# coding: utf-8
string = "£"
或等效
string = u"\u00a3"
如果没有编码声明,Python 会看到一堆字节,这些字节在不同的编码中表示不同的含义。它不是猜测,而是强制你告诉你它们的意思。这已编入 PEP-263 .
(ASCII 是明确的 [除非你的系统是 EBCDIC,我猜] 所以如果你对所有内容都使用纯 ASCII 表示,它知道你的意思。)
您摆弄的编码设置会影响文件和流的读取方式以及程序 I/O,但不会影响程序源代码的解释方式。
关于Python UTF-8 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33914593/