web-dev-qa-db-ja.com

未変換のデータが残っています:.387000 in Python

テキストファイルから読み取った文字列である日時があります。余分なミリ秒をトリミングしたいのですが、最初にそれを日時変数に変換したいと思います。これは、テキストファイルの内容に応じて形式が異なるためです。しかし、私が試したすべてのことが、私がすでにフォーマットを知っていることを望んでいます。私がここで試みていることを見てください:

import time, datetime

mytime = "2015-02-16 10:36:41.387000"
myTime = time.strptime(mytime, "%Y-%m-%d %H:%M:%S.%f")

myFormat = "%Y-%m-%d %H:%M:%S"

print datetime.datetime.fromtimestamp(time.mktime(time.strptime(mytime, myFormat)))

しかし、これは私にこのエラーを与えます:

File "python", line 10, in <module>
ValueError: unconverted data remains: .387000`

誰かが私に通常の日時形式を行う方法を教えてもらえますか?他の言語では、さまざまな形式で渡すことができ、問題なく新しい形式に設定できます。

9
TheBigOnion

あなたはそれを逆にやっています。これを試して:

from datetime import datetime

mytime = "2015-02-16 10:36:41.387000"
myTime = datetime.strptime(mytime, "%Y-%m-%d %H:%M:%S.%f")

myFormat = "%Y-%m-%d %H:%M:%S"

print "Original", myTime
print "New", myTime.strftime(myFormat)

結果:

Original 2015-02-16 10:36:41.387000
New 2015-02-16 10:36:41
22
Selcuk

myFormatでマイクロ秒を参照するのを忘れました

myFormat = "%Y-%m-%d %H:%M:%S.%f"

とにかく、少ないステップで変換できます

from datetime import datetime

mytime = "2015-02-16 10:36:41.387000"
full = "%Y-%m-%d %H:%M:%S.%f"
myTime = datetime.strptime(mytime, full)
>>> datetime.datetime(2015, 2, 16, 10, 36, 41, 387000)

ここでmytimedatetimeオブジェクト内にあります。マイクロ秒なしで印刷したい場合は、strftime

myfmt = "%Y-%m-%d %H:%M:%S"
print datetime.strptime(mytime, full).strftime(myfmt)
>>> 2015-02-16 10:36:41
4
Mauro Baraldi