2

この日付形式から時間データのみを取得したいですか? 次の場合は 23:55:00 です。などを含む多くの方法を試しましdatetime.strptimefrom dateutil import parserが、失敗しました。:( Pythonでそれを行うには?

[15/Apr/2013:23:55:00 +0530]
4

3 に答える 3

6

「日付」に文字列としてアクセスできると仮定します。

>>> from datetime import datetime

>>> time_string = "[15/Apr/2013:23:55:00 +0530]"

>>> format = "[%d/%b/%Y:%H:%M:%S %z]"
>>> dt = datetime.strptime(time_string, format)
>>> dt
datetime.datetime(2013, 4, 15, 23, 55, tzinfo=datetime.timezone(datetime.timedelta(0, 19800)))

# Accessing the time as an object:
>>> the_time = dt.time()
>>> the_time
datetime.time(23, 55)

# Accessing the time as a string:
>>> the_time.strftime("%H:%M:%S")
'23:55:00'

日付の形式が固定されていることを明確に確信している場合は、文字列をスライスするだけです。

>>> time_string = "[15/Apr/2013:23:55:00 +0530]"
>>> time_string[-15:-7]
'23:55:00'

これはほんの一例です。Pythonには、データにより適した文字列操作関数がたくさんあります。それらを見てみるのをためらわないでください!

于 2013-06-11T05:49:54.233 に答える
1

正規表現を使用して時間部分だけを取得できます

import re

date = '15/Apr/2013:23:55:00 +0530'
regex = ':(?P<time>[0-9]{2}:[0-9]{2}:[0-9]{2})'
just_time = re.search(regex, date).groupdict()['time']
于 2013-06-11T06:30:33.470 に答える
0

あなたは時間オブジェクトではなく文字列に興味があるので、これを行うことができます:

>>> s = '[15/Apr/2013:23:55:00 +0530]'
>>> s[13:21]
23:55:00

datetime文字列で時間計算を行う場合にのみ必要です。ただし、タイムゾーンを無視しているため、必要なのは時間を表す文字列だけのようです。

もちろん、必要に応じて、いつでもそれ時間オブジェクトに変換できます。

>>> import time
>>> t = time.strptime(s[13:21], '%H:%M:%S')
于 2013-06-11T06:43:31.880 に答える