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

时间:2017-09-11 15:08:45

标签: python list find tuples

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

<script src="https://rawgit.com/kangax/fabric.js/1.x/dist/fabric.js"></script>
<canvas id="c" width="400" height="400"></canvas>
<div>
    <button id="rotate-left">Rotate left</button>
    <button id="rotate-right">Rotate right</button>
</div>
<div id="log" class="log">

</div>

给出

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

没有轻易放弃,但是在这个

的兔子洞里

2 个答案:

答案 0 :(得分:0)

你不需要任何循环,只需选择第一个&amp;来自每个元组的唯一项目,并在其上执行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']

答案 1 :(得分:0)

使用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']