2010-03-18 1 views
0

Я новичок в Python. Я хочу вычесть интервал времени из моего файла журнала, но проблема в том, что я не могу преобразовать миллисекундную строку файла журнала в формат даты и времени. Например, у меня есть 15: 55: 05.12345, и я хочу удалить 5.12345 секунд из этой строки и показать результат 15.55.00.00000 в Python. Как я могу это сделать? В настоящее время я использую python 2.5.конвертировать строку миллисекунды в datetime в python

Заранее спасибо.

К сожалению, я имел в виду, я хочу, чтобы вычесть значение, например, удалить 00: 00: 05.1000 так, я должен получить 15:55:00:02345

ответ

1
>>> import datetime 
>>> s = '15:55:05.12345' 
>>> datetime.datetime.strptime(s.rpartition('.')[0], '%H:%M:%S').strftime('%H.%M.00.00000') 
'15.55.00.00000' 

редактировать после осветления:
не существует никакого способа сделать это со стандартной библиотеки Python, только работая непосредственно со строками:

>>> s[:6]+ '00' + s[-6:] 
'15:55:00.12345' 
+0

Жаль, что я имею в виду, я хочу substact значение, например, удалить 00: 00: 05,1000 так, я должен получить 15: 55: 00: 02345 – newbie

+0

мне приходится иметь дело с большими файлами журнала. Я не могу использовать для установки всех значений строк вручную. Есть ли у вас какое-либо другое предложение, которое я могу сделать, чтобы решить эту проблему? – newbie

+0

@newbie: Я не понимаю ваше возражение? кто говорит, что вы должны сделать это вручную? – SilentGhost

0

Я вижу, что вам нужно вычесть из значения, поэтому я хотел бы использовать timedelta объекты, потому что йо u может делать математику с этими.

>>> value = '15:55:05.123450' 
>>> m = re.match('(\d+):(\d+):(\d+\.\d+)', value) 
>>> hour = int(m.group(1)) 
>>> min = int(m.group(2)) 
>>> sec = float(m.group(3)) 
>>> now = datetime.timedelta(hours=hour,minutes=min,seconds=sec) 
>>> str(now) 
'15:55:05.123450' 
>>> 
>>> delta = datetime.timedelta(seconds=5.1) 
>>> 
>>> earlier = (now - delta) 
>>> str(earlier) 
'15:55:00.023450' 
>>>