如果我在脚本的开头声明“ line”变量,则以下代码将按预期工作。就像是 ...
s = "Jul 15 12:12:51 whitelist logger: 1|999999999999|id:d9faff7c-4016-4343-b494-37028763bb66 submit date:1307130919 done date:1307130919 stat:DELIVRD err:0|L_VB3_NM_K_P|1373687445|vivnel2|L_VB3_GH_K_P|promo_camp1-bd153424349bc647|1"
当我打开文件并循环浏览时,groups属性不起作用。我收到一个错误:AttributeError:“ NoneType”对象没有属性“ groups”
# cat mylast.py
import re
f = open('customer.csv')
for line in f:
logger_re = re.compile(
"logger: ([^ ]+)\
submit date:(\d+)\
done date:(\d+)\
stat:(.+)\
err:(.+)$")
myvalues = logger_re.search(line).groups()
print myvalues
f.close()
例外:
# python mylast.py
Traceback (most recent call last):
File "mylast.py", line 13, in ?
myvalues = logger_re.search(line).groups()
AttributeError: 'NoneType' object has no attribute 'groups'
您的正则表达式与实际文件内容不匹配。
因此,logger_re.search(line)
return None
。
这里的问题是您缩进了正则表达式,但没有补偿多余的空格:
logger_re = re.compile(
"logger: ([^ ]+)\
submit date:(\d+)\
done date:(\d+)\
stat:(.+)\
err:(.+)$")
请注意,该行开头的空白很重要。使用单独的字符串(Python将在编译时将它们加入):
logger_re = re.compile(
"logger: ([^ ]+) "
"submit date:(\d+) "
"done date:(\d+) "
"stat:(.+) "
"err:(.+)$")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句