带有utf8问题的python正则表达式

cas*_*iel 8 python regex utf-8 python-2.7

我有一个文件,其中包含许多简单的utf-8文本行.如下,由by,它是中国人.

PROCESS????????[NOTIFY]   ????2012022900000109   ????W12022910079166    ?????0.01?    ?????true 2012-2-29 10:13:08
Run Code Online (Sandbox Code Playgroud)

文件本身以utf-8格式保存.文件名是xx.txt

这是我的python代码,env是python2.7

#coding: utf-8
import re
pattern = re.compile(r'?????(\d+)?')
for line in open('xx.txt'):
    match = pattern.match(line.decode('utf-8'))
    if match:
        print match.group()
Run Code Online (Sandbox Code Playgroud)

这里有问题的是我没有结果.

我想从?????0.01?这里得到十进制字符串,这是0.01.

为什么这段代码不起作用?任何人都可以向我解释,我不知道任何线索.

uhz*_*uhz 18

您的代码有几个问题.首先你应该使用re.compile(ur'<unicode string>').另外很高兴添加re.UNICODE标志(虽然不确定是否真的需要).下一个是你仍然不会收到匹配,因为\d+不处理小数只是一系列数字,你应该使用\d+\.?\d+(你想要数字,可能是一个点和一个数字).示例代码:

#coding: utf-8

text = u"PROCESS????????[NOTIFY]   ????2012022900000109   ????W12022910079166    ?????0.01?    ?????true 2012-2-29 10:13:08"
import re
pattern = re.compile(ur'?????(\d+\.?\d+)?', re.UNICODE)

print pattern.search(text).group(1)
Run Code Online (Sandbox Code Playgroud)