0
我想获取从标准VSFTP日志文件的日期,文件是如下:Python的正则表达式获取日期格式的日志文件
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)
该代码可以正确获取日期和月份(组(1)=星期五,组(2)= 9月)。
但我想获取的日期(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)=星期五,组(2)=九月,组(3)= 1
任何人都可以解释给我吗?
感谢您的解决方案!有效。但我仍然很好奇。你知道为什么我会得到有线结果,如果我通过语法“with”阅读文件? – Ilikeperl