Python Unicode 字符串的正则表达式标记化未按预期工作
Python regex tokenization of Unicode string not working as expected
我遇到了正则表达式标记化和 Unicode 字符串的奇怪问题。
> mystring = "Unicode rägular expressions"
> tokens = re.findall(r'\w+', mystring, re.UNICODE)
这是我得到的:
> print tokens
['Unicode', 'r\xc3', 'gular', 'expressions']
这是我的预期:
> print tokens
['Unicode', 'rägular', 'expressions']
我需要做什么才能获得预期的结果?
更新:这个问题与我的不同: matching unicode characters in python regular expressions But it's answer 也能解决我的问题。
字符串必须是 unicode。
mystring = u"Unicode rägular expressions"
tokens = re.findall(r'\w+', mystring, re.UNICODE)
您有 Latin-1 或 Windows 代码页 1252 字节,而不是 Unicode 文本。解码您的输入:
tokens = re.findall(r'\w+', mystring.decode('cp1252'), re.UNICODE)
根据所使用的编解码器,编码字节可以表示任何含义,它不是特定的 Unicode 代码点。对于字节串(类型str
),使用\w
.
时只能匹配ASCII字符
我遇到了正则表达式标记化和 Unicode 字符串的奇怪问题。
> mystring = "Unicode rägular expressions"
> tokens = re.findall(r'\w+', mystring, re.UNICODE)
这是我得到的:
> print tokens
['Unicode', 'r\xc3', 'gular', 'expressions']
这是我的预期:
> print tokens
['Unicode', 'rägular', 'expressions']
我需要做什么才能获得预期的结果?
更新:这个问题与我的不同: matching unicode characters in python regular expressions But it's answer 也能解决我的问题。
字符串必须是 unicode。
mystring = u"Unicode rägular expressions"
tokens = re.findall(r'\w+', mystring, re.UNICODE)
您有 Latin-1 或 Windows 代码页 1252 字节,而不是 Unicode 文本。解码您的输入:
tokens = re.findall(r'\w+', mystring.decode('cp1252'), re.UNICODE)
根据所使用的编解码器,编码字节可以表示任何含义,它不是特定的 Unicode 代码点。对于字节串(类型str
),使用\w
.