2016-11-22 19 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作爲解釋

相關問題