python从元组列表中获取部分字符串列表

2024-04-25 19:24:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个元组列表,它的日期和时间,从;到

print datetime

给予

[(u'2017-09-10-14-00-35;2017-09-10-14-15-46',), (u'2017-09-10-13-45-23;2017-09-10-14-00-35',), (u'2017-09-10-13-30-05;2017-09-10-13-45-23',)]

我想列一个新的列表,但只列出“到”时间:

['2017-09-10-14-15-46', '2017-09-10-14-00-35', '2017-09-10-13-45-23']

到目前为止,我似乎还不能把所有的元素放在一起

for a in datetime:
    for b in a:
        enddates = [b[b.find(";")+1:] for b in a]
print enddates

只给出最后一个结果,不给出列表

[u'2017-09-10-13-45-23']

并没有轻易放弃,而是在这个问题上下了兔子洞


Tags: in元素列表fordatetime时间find元组
2条回答

您不需要任何循环,只需从每个元组中选取第一个&unique项,并对其执行str.partition(使用第二个元素:最右边的元素),就像您尝试的那样

a = [(u'2017-09-10-14-00-35;2017-09-10-14-15-46',), (u'2017-09-10-13-45-23;2017-09-10-14-00-35',), (u'2017-09-10-13-30-05;2017-09-10-13-45-23',)]

enddates = [b[0].partition(";")[2] for b in a]

print(enddates)

结果:

['2017-09-10-14-15-46', '2017-09-10-14-00-35', '2017-09-10-13-45-23']

使用str.split()函数:

dt = [(u'2017-09-10-14-00-35;2017-09-10-14-15-46',), (u'2017-09-10-13-45-23;2017-09-10-14-00-35',), (u'2017-09-10-13-30-05;2017-09-10-13-45-23',)]
result = [d[0].split(';')[1] for d in dt]
print(result)

或与str.rfind()函数相同:

...
result = [d[0][d[0].rfind(';')+1:] for d in dt]

输出:

['2017-09-10-14-15-46', '2017-09-10-14-00-35', '2017-09-10-13-45-23']

相关问题 更多 >