>> -6ren">
gpt4 book ai didi

Python 极其令人费解的正则表达式 unicode 行为

转载 作者:太空狗 更新时间:2023-10-29 21:43:43 27 4
gpt4 key购买 nike

我使用分词器将法语句子拆分成单词,但在处理包含法语字符 â 的单词时遇到了问题。

我试图找出问题所在,最终归结为这个简单的事实:

>>> re.match(r"’", u'â', re.U)
>>> re.match(r"[’]", u'â', re.U)
<_sre.SRE_Match object at 0x21d41d0>

â 与包含 ' 的模式相匹配如果它被放入集成匹配器中。

我在 UTF-8 处理方面有什么问题还是错误?

我的 python 版本是:

Python 2.7.3 (default, Jan  2 2013, 13:56:14) 
[GCC 4.7.2] on linux2

编辑:

嗯,很尴尬,似乎用 u 替换模式前缀的 r 可以解决问题。

我想知道为什么官方文档大量使用r然后:((

最佳答案

你的模式也应该是一个 unicode 字符串:

 >>> re.match(ur"’", u'â', re.U)
>>> re.match(ur"[’]", u'â', re.U)

否则显然 sreâ 编码为 latin-1,并在三个字节中找到结果字节,即 utf-8 '

[']" 等同于 "[\xe2\x80\x99]",而 u'â'.encode('latin- 1')\xe2

关于Python 极其令人费解的正则表达式 unicode 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067721/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com