值得离开这里,这是我在Python的第二天,而且我对这种语言并不十分专业。任何低级别的建议和易于理解都会非常感激。
我想在python中使用正则表达式中的变量。我在答案中没有任何运气,已经阅读了这个问题How to use a variable inside a regular expression?。
代码:
import time
import re
dia = time.strftime('%b %d')
final = open('/root/final.txt', 'ab')
file = open('/var/log/syslog', 'rb')
for line in file:
if re.findall('kernel|\bNetworkManager\b', line):
if re.findall(r'dia', line):
final.write(line)
我认为很多代码与问题无关。
我也尝试过这个解决方案if re.findall(r'%s'%dia, line)
没有幸运。
由于我在这里,我想解释一下我的想法,看看我是否朝着正确的方向前进:
提前致谢。祝你今年愉快。
答案 0 :(得分:1)
您无法在字符串中引用变量。字符串只是文本,它不知道命名空间,解释器也没有解决它。
由于您的变量dia
是一个字符串,因此您可以在调用re.findall
时使用该字符串:
if re.findall(dia, line):
pass
或类似的东西:
if re.findall(r"{0}".format(dia), line):
pass
至于你正在做什么的正确性,如果日志上的时间戳格式与你正在使用的格式相同,那么它应该是正确的。
编辑:如果你正在从日志中读取字符串,你不需要(或不应该)将它们打开为二进制文件,即b
标志