1

我有这个清单:

[[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
4

3 回答 3

2

您可以使用itertools.groupbydatetime.strptime

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('.')( @jonclements建议:):

for k, g in groupby(lis, key=lambda x:x[0].partition('.')[0]):
    print '\n'.join(x[0] for x in g) + '\n'
于 2013-10-28T15:37:24.400 回答
1

打印所有邮票:

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 而不是一起使用单独的函数):

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'

应该更快。

于 2013-10-28T15:38:06.307 回答
0

假设my_list是你的列表,第一个元素是一个字符串

1.

for item in my_list:
    print item[0]

2.

for item in my_list:
    if item[0].startswith('10:09:56.'):
        print item[0]
于 2013-10-28T15:35:52.690 回答