在regex python中使用变量

时间:2016-01-02 01:13:28

标签: python regex

值得离开这里,这是我在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)没有幸运。

由于我在这里,我想解释一下我的想法,看看我是否朝着正确的方向前进:

  1. 打开syslog
  2. 查找“内核”和“NetworkManager”一词
  3. 如果该行的开头是今天写入final。
  4. 提前致谢。祝你今年愉快。

1 个答案:

答案 0 :(得分:1)

您无法在字符串中引用变量。字符串只是文本,它不知道命名空间,解释器也没有解决它。

由于您的变量dia是一个字符串,因此您可以在调用re.findall时使用该字符串:

if re.findall(dia, line):
    pass

或类似的东西:

if re.findall(r"{0}".format(dia), line):
    pass

至于你正在做什么的正确性,如果日志上的时间戳格式与你正在使用的格式相同,那么它应该是正确的。

编辑:如果你正在从日志中读取字符串,你不需要(或不应该)将它们打开为二进制文件,即b标志