Python UTF-8 正则表达式

标签 python regex unicode

我在尝试查找正则表达式中指定的文本时遇到问题。 一切都很好,但是当我在我的正则表达式中添加“\£”时,它开始引起问题。我得到语法错误。文件 (...) 中的“非 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/

相关文章:

python - Celery 在具有其他文件名的文件中发现任务

java - 如何删除不平衡/不成对的双引号(在 Java 中)

java - REGEX 匹配文件名约定

javascript - 如何设置 unicode 字符的样式?

python - Instagram 实时 API 看不到我的服务器

python - Python中windows中外部窗口的截图

html - 有什么理由不将 HTML 编码设置为 UTF-8 吗?

python - 如何将 unicode 更改为 ascii 并删除无法识别的字符

python - MFRC522 RFID Python3 脚本无法启动 : No such file or directory

python - Python 中 re.findall 的明显限制