concat元组的部分到明智的日期/时间格式



我正在尝试通过以这种语言完成简单的事情来学习Python。我有一个非常简单的日志文件:

LOGON, Thu 30-01-2014, 12:38:01,11, username1, machinename 
LOGOFF, Thu 30-01-2014, 12:56:41,57, username2, machinename 
LOGON, Thu 30-01-2014, 13:02:37,00, username3, machinename 
LOGOFF, Thu 30-01-2014, 13:02:51,48, username1, machinename 
LOGON, Thu 30-01-2014, 13:15:13,91, username2, machinename 
LOGOFF, Thu 30-01-2014, 14:58:31,38, username3, machinename 
LOGON, Thu 30-01-2014, 15:24:24,27, username2, machinename 
LOGOFF, Thu 30-01-2014, 15:48:31,87, username3, machinename

我打开文件,然后创建一个元组:

# Open file, put it in a tuple
v_log_filename = 'test.txt'
with open(v_log_filename) as inputFile:
    t_log_lines = [tuple(line.split(',')) for line in inputFile.readlines()]
#Rearange output
for log in t_log_lines:
    print log[0],log[4],log[1],log[2]

问题:我想将log [1]和log [2] conct到一个明智的日期和时间,然后重新创建元组。

第一次尝试:

for log in t_log_lines:
    t_n_log_lines = t_n_log_lines + (log[0], log[4], (str(log[1]), str(log[2])))
for log in t_n_log_lines:
    print log

结果:

(' Thu 30-01-2014', ' 13:01:03')
LOGOFF
 username
(' Thu 30-01-2014', ' 13:01:35')
LOGON
 username
(' Thu 30-01-2014', ' 13:04:43')
LOGOFF
 username
(' Thu 30-01-2014', ' 13:04:59')

我正在寻找更像:

的解决方案
('Thu 30-01-2014 13:01:03', 'LOGOFF', 'username')

这为您提供了所需的内容:

t_n_log_lines = []
with open(v_log_filename) as f:
    for line in f:
        l = map(str.strip, line.split(','))
        t_n_log_lines.append((l[1] + ' ' + l[2], l[0], l[4]))
print t_n_log_lines
>>> [('Thu 30-01-2014 12:38:01', 'LOGON', 'username1'),
>>>  ('Thu 30-01-2014 12:56:41', 'LOGOFF', 'username2'),
>>>  ('Thu 30-01-2014 13:02:37', 'LOGON', 'username3'),
>>>  ('Thu 30-01-2014 13:02:51', 'LOGOFF', 'username1'),
>>>  ('Thu 30-01-2014 13:15:13', 'LOGON', 'username2'),
>>>  ('Thu 30-01-2014 14:58:31', 'LOGOFF', 'username3'),
>>>  ('Thu 30-01-2014 15:24:24', 'LOGON', 'username2'),
>>>  ('Thu 30-01-2014 15:48:31', 'LOGOFF', 'username3')]

log[n]条目已经是字符串,因此无需再次转换它们。当您想将它们连接在一起时,请使用+操作员。使用,时,Python会创建另一个元组,该元组放在外元元元元人元组中。这就是您在输出中看到的。

我不知道您是否需要这个。

a=r'''LOGON, Thu 30-01-2014, 12:38:01,11, username1, machinename 
LOGOFF, Thu 30-01-2014, 12:56:41,57, username2, machinename 
LOGON, Thu 30-01-2014, 13:02:37,00, username3, machinename 
LOGOFF, Thu 30-01-2014, 13:02:51,48, username1, machinename 
LOGON, Thu 30-01-2014, 13:15:13,91, username2, machinename 
LOGOFF, Thu 30-01-2014, 14:58:31,38, username3, machinename 
LOGON, Thu 30-01-2014, 15:24:24,27, username2, machinename 
LOGOFF, Thu 30-01-2014, 15:48:31,87, username3, machinename'''
t_log_lines = [tuple(line.split(',')) for line in a.split('n')]
t_n_log_lines=[]
for log in t_log_lines:
    log=map(lambda x: x.strip(),log)
    t_n_log_lines.append(  ("%s %s"%(log[1],log[2]), log[0],log[4],) ) 
for log in t_n_log_lines:
    print log

最新更新