在python中分隔字段
我有Linux/Unix系统日志文件,我想将日期和时间分离成变量。如何在python中实现它 以下是日志格式:在python中分隔字段,python,syslog,Python,Syslog,我有Linux/Unix系统日志文件,我想将日期和时间分离成变量。如何在python中实现它 以下是日志格式: Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team 我想把Feb放在一个变量中,日期(26)、时间(14:20:04)等也是如此 在shell脚本中,我可以通过cut-d”“-f1-4来完成,其中“是分隔符,1-4是字段号 谢谢 如果您只是想模拟cut,您可以在
Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team
我想把Feb
放在一个变量中,日期(26)、时间(14:20:04)等也是如此
在shell脚本中,我可以通过cut-d”“-f1-4
来完成,其中“
是分隔符,1-4
是字段号
谢谢 如果您只是想模拟
cut
,您可以在空间上拆分并获取条目1-4
>>> logline = 'Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team'
>>> logline.split(' ')[0:4]
['Feb', '26', '14:20:04', 'laptop']
(您只想要前3个字段吗?)
您也可以使用regex,但我认为在这种情况下没有必要使用它。如果您只是想模拟
cut
,您可以在空间上拆分并获取条目1-4
>>> logline = 'Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team'
>>> logline.split(' ')[0:4]
['Feb', '26', '14:20:04', 'laptop']
(您只想要前3个字段吗?)
您也可以使用regex,但我认为在这种情况下没有必要使用它。我认为您的目标有点低。Python在这方面非常强大。您的主要问题是日志文件格式缺少年份字段和时区偏移字段(因此在时钟倒转的那天它是不明确的)。许多现代版本的syslog允许您更改时间戳格式,因此肯定可以解决这一问题
$ cat log-parse.py
logdata="Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team"
import re
logrx = re.compile('([^ ]+ [0-9][0-9]? [0-9][0-9]:[0-9][0-9]:[0-9][0-9])(.*)$')
m = logrx.match(logdata)
datestr = m.group(1)
fields = m.group(2).split()
print datestr
for i, s in enumerate(fields):
print " ", i, s
$ python log-parse.py
Feb 26 14:20:04
0 laptop
1 kernel:
2 [19.392640]
3 ip_tables:
4 (C)
5 2000-2006
6 Netfilter
7 Core
8 Team
我觉得你的目标有点低。Python在这方面非常强大。您的主要问题是日志文件格式缺少年份字段和时区偏移字段(因此在时钟倒转的那天它是不明确的)。许多现代版本的syslog允许您更改时间戳格式,因此肯定可以解决这一问题
$ cat log-parse.py
logdata="Feb 26 14:20:04 laptop kernel: [19.392640] ip_tables: (C) 2000-2006 Netfilter Core Team"
import re
logrx = re.compile('([^ ]+ [0-9][0-9]? [0-9][0-9]:[0-9][0-9]:[0-9][0-9])(.*)$')
m = logrx.match(logdata)
datestr = m.group(1)
fields = m.group(2).split()
print datestr
for i, s in enumerate(fields):
print " ", i, s
$ python log-parse.py
Feb 26 14:20:04
0 laptop
1 kernel:
2 [19.392640]
3 ip_tables:
4 (C)
5 2000-2006
6 Netfilter
7 Core
8 Team