小编典典

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

python

我得到了一个包含多行纯utf-8文本的文件。如下所示,按中文,是中文。

PROCESS:类型:关爱积分[NOTIFY]   交易号:2012022900000109   订单号:W12022910079166    交易金额:0.01元    交易状态:true 2012-2-29 10:13:08

文件本身以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()

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

我想从交易金额:0.01元这里的十进制字符串中获得0.01

为什么此代码不起作用?谁能向我解释,我什么也没有。


阅读 151

收藏
2020-12-20

共1个答案

小编典典

您的代码有几个问题。首先,您应该使用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)
2020-12-20