Python正则表达式获取日期表单日志文件

时间:2017-09-01 23:15:16

标签: python regex

我想从标准vsftp日志文件中获取日期,文件如下:

Fri Sep  1 15:43:46 2017 1 ::ffff:172.18.1.168 14848 /IT_inventory.xls b _ i r user01 ftp 0 * c

我尝试使用正则表达式:

#!/usr/bin/python
import re
    with open("/var/log/xferlog") as log:
        for line in log:
            pattern = re.compile(r'(\w+) (\w+)')
            match = pattern.search(line)
            print match.group(1)
            print match.group(2)

代码可以正确获取日期和月份(group(1)= Fri,group(2)= Sep)。

但是我想获取日期(1),所以我改变了模式:

pattern = re.compile(r'(\w+) (\w+) (\d+)')
        match = pattern.search(line)
        print match.group(1)
        print match.group(2)
        print match.group(3)

但输出更改为46,2017,1(组(1)= 46,组(2)= 2017,组(3)= 1)

如果我手动设置线路。

line = "Fri Sep 1 15:43:46 2017 1 ::ffff:172.18.1.168 14848 /IT_inventory.xls b _ i r user01 ftp 0 * c"

pattern = re.compile(r'(\w+) (\w+) (\d+)')
match = pattern.search(line)
print match.group(1)
print match.group(2)
print match.group(3)

然后我可以得到我想要的东西。

组(1)= Fri,组(2)= 9月,组(3)= 1

有人可以向我解释一下吗?

1 个答案:

答案 0 :(得分:2)

你可以试试这个:

import re

s = "Fri Sep  1 15:43:46 2017 1 ::ffff:172.18.1.168 14848 /IT_inventory.xls b _ i r user01 ftp 0 * c"

data = re.findall("^\w+\s\w+", s)[0].split()

输出:

['Fri', 'Sep']