2016-11-22 20 views

回答

1

如果你知道的时候所有三个部分总是会被格式化为两位数,这意味着整个时间总是正好8个字符,那么我觉得你的方式是最容易:duration = S[:8]。否则,如果您知道您的时间总是后面跟着一个逗号,那么您可以分开逗号并取第一个元素:duration = S.split(',')[0]

否则,你可以使用正则表达式,如果你不知道你的时间永远是8个字符长,你不知道的时候会跟一个逗号:r'(\d\d?:\d\d?\d\d?)'

编辑:

在你的评论中,它说你想读通过所有的行。如果你有一个包含所有由新行分隔的行的字符串,首先你需要将字符串拆分成单独的行,通过分隔新行。然后你要遍历,每次得到:

# 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 
+0

但是,这将通读所有行或只是第一行? –

+0

刚刚编辑我的评论遍历所有行:) –

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'] 
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作为解释

相关问题