我得到了一个包含多行纯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。
交易金额:0.01元
0.01
为什么此代码不起作用?谁能向我解释,我什么也没有。
您的代码有几个问题。首先,您应该使用re.compile(ur'<unicode string>')。另外,添加re.UNICODE标志也很不错(尽管不确定此处是否确实需要)。下一个是您仍然不会收到匹配项,因为\d+不能只处理一系列数字,\d+\.?\d+而应该只处理小数(您需要数字,可能是点和数字)。示例代码:
re.compile(ur'<unicode string>')
\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)