如何从新行分隔的字符串中收集某些字符?

时间:2016-11-22 13:33:44

标签: python time

我有一个时间字符串列表,后跟电话号码: -

00:12:23, 0712313412352

01:14:52, 0712312341256

什么是获取持续时间的最简单方法?

duration = S[0:8] # duration is first 8 characters

3 个答案:

答案 0 :(得分:1)

如果您知道时间的所有三个部分将始终被格式化为两位数,这意味着整个时间总是正好是8个字符,那么我认为您的方式最简单:duration = S[:8]

否则,如果你知道你的时间总是跟着一个逗号,你可以分开逗号并取第一个元素:duration = S.split(',')[0]

否则你可以使用正则表达式,如果你不知道你的时间总是8个字符,并且你不知道时间后面会跟一个逗号:r'(\d\d?:\d\d?\d\d?)' < / p>

编辑:

在你的评论中,它表示你想要阅读所有内容。如果你有一个包含由新行分隔的所有行的字符串,首先你要通过拆分新行将字符串拆分成单独的行。然后你想要迭代并获得每次:

# Assume the text is stored in text_string
lines = text_string.split('\n')
times = [] # make an empty list to hold the times
for line in lines:
    time = line[:8]
    times.append(time) # Add the time to our list
print times # This will print our list of times

答案 1 :(得分:1)

假设lines.txt包含您的行:

>>> [ x[:8] for x in open('lines.txt').readlines() ]
['00:12:23', '00:12:23', '00:12:23']

或者,如果第一个字段是可变长度:

>>> [ x.split(',')[0] for x in open('lines.txt').readlines() ]
['00:12:23', '00:12:23', '00:12:23']

答案 2 :(得分:1)

最好的方法之一是使用正则表达式并创建一个有用的模式来查找所需的字符串部分

import re

string = "00:12:23, 0712313412352"
request = re.match(r"(^\d*....\d*)", string)
print request.group()
>>>00:12:23

你可以在https://regex101.com/上尝试不同的正则表达式模式,你也可以在python上作为解释器