在regex python中使用变量
问题内容:
值得离开这里,这是我第二天使用Python,并且对这种语言不是很专业。任何低水平的建议和易于理解的方法将不胜感激。
我想在python的正则表达式中使用一个变量。我已经阅读了这个问题,如何在正则表达式中使用变量? 没有任何运气的答案。
码:
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)
很幸运地尝试过这种解决方案。
既然我在这里,我想解释一下我的想法,看看我是否朝着正确的方向前进:
- 打开系统日志
- 查找内核和NetworkManager一词
- 如果今天是该行的开始,请写到final。
提前致谢。祝您新年快乐。
问题答案:
您不能在字符串中引用变量。字符串只是文本,它不知道名称空间,并且解释器不会为此解决它。
由于您的变量dia
是一个字符串,因此您可以在调用时使用它re.findall
:
if re.findall(dia, line):
pass
或类似的东西:
if re.findall(r"{0}".format(dia), line):
pass
至于您所做工作的正确性,如果日志中时间戳的格式与您使用的相同,则它应该是正确的。
编辑:如果您正在从日志中读取字符串,则无需(或不应)以二进制形式打开它们,即b
标志