在python列表中选择一些元素
我有以下清单:在python列表中选择一些元素,python,list,sequence,Python,List,Sequence,我有以下清单: [[10:09:56.033,ComponentB,2,DEBUG,description], [10:09:56.034,ComponentB,1,DEBUG,description], [10:09:57.034,ComponentB,2,DEBUG,description], [10:09:57.045,ComponentB,2,DEBUG,description]] 如何打印所有时间戳。比如: 10:09:56.033 10:09:56.034 10:09:57.034
[[10:09:56.033,ComponentB,2,DEBUG,description],
[10:09:56.034,ComponentB,1,DEBUG,description],
[10:09:57.034,ComponentB,2,DEBUG,description],
[10:09:57.045,ComponentB,2,DEBUG,description]]
如何打印所有时间戳。比如:
10:09:56.033
10:09:56.034
10:09:57.034
10:09:57.045
另外,如何每秒只打印时间戳,如:
10:09:56.033
10:09:56.034
假设
my_list
是您的列表,第一个元素是字符串
一,
二,
您可以使用
itertools.groupby
和datetime.strtime
:
from itertools import groupby
from datetime import datetime
def solve(item):
dt = datetime.strptime(item[0], '%H:%M:%S.%f')
return dt.hour, dt.minute, dt.second
lis = [['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'], ['10:09:56.034', 'ComponentB', 1, 'DEBUG', 'description'], ['10:09:57.034', 'ComponentB', 2, 'DEBUG', 'description'], ['10:09:57.045', 'ComponentB', 2, 'DEBUG', 'description']]
for k, g in groupby(lis, key=solve):
print '\n'.join(x[0] for x in g) + '\n'
输出:
10:09:56.033
10:09:56.034
10:09:57.034
10:09:57.045
datetime
对象转换的其他替代方法是使用str.partition('.')
(by@jonclements:):
印制所有邮票:
stamps = [
['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
['10:09:56.034', 'ComponentB', 1, 'DEBUG,description'],
['10:09:57.034', 'ComponentB', 2, 'DEBUG,description'],
['10:09:57.045', 'ComponentB', 2, 'DEBUG,description']
]
for var in stamps:
print var[0]
至于每秒打印(hcwhsa答案的变体,使用lambdas而不是单独的函数):
这应该更快。首先我会修复它,因为该列表无效。请发布一些您尝试过但不起作用的代码。如果我们知道您在尝试什么,我们可以提供帮助。@sid16rgt我正在尝试以下代码:row_taker=[row.split()for row in log_file]print(row_taker[0][0]),但显然它只会打印一项。对于行中行选取器:打印行选取器[0]可以这样做:对于行中行选取器:对于prv,nxt在zip中(行选取器,行选取器[1:]):如果i
10:09:56.033
10:09:56.034
10:09:57.034
10:09:57.045
for k, g in groupby(lis, key=lambda x:x[0].partition('.')[0]):
print '\n'.join(x[0] for x in g) + '\n'
stamps = [
['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
['10:09:56.034', 'ComponentB', 1, 'DEBUG,description'],
['10:09:57.034', 'ComponentB', 2, 'DEBUG,description'],
['10:09:57.045', 'ComponentB', 2, 'DEBUG,description']
]
for var in stamps:
print var[0]
from itertools import groupby
lis = [['10:09:56.033', 'ComponentB', 2, 'DEBUG', 'description'],
['10:09:56.034', 'ComponentB', 1, 'DEBUG', 'description'],
['10:09:57.034', 'ComponentB', 2, 'DEBUG', 'description'],
['10:09:57.045', 'ComponentB', 2, 'DEBUG', 'description']]
for k, g in groupby(lis, key=lambda item: item[0][0:8]):
print k
print '\n'.join(x[0] for x in g) + '\n'