作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
>> -6ren">
我使用分词器将法语句子拆分成单词,但在处理包含法语字符 â
的单词时遇到了问题。
我试图找出问题所在,最终归结为这个简单的事实:
>>> 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/
很抱歉新手的问题,但是: 我最近才发现“=”运算符不只是处理对象/等等。值(value),也是引用。这很酷,但我认为这对变量来说是不一样的,它不会在存储整数或 float 的变量之间创建引用。后来我觉
我是一名优秀的程序员,十分优秀!