2016-10-24 1 views
1

私はこのような時間値の2列のテキストファイルがあります:はい、1列のための余分な数字を持っている07.636とValueError:未変換データが残っている:

21:28:07.638502 21:28時間。私はちょうどすべての行を読んで、マイクロ秒単位で時差を得ようとしています...

私は次のようなものを試してみるとエラーになります。

import datetime 
format="%H:%M:%S.%f" 
with open(file) as fh: 
    for line in fh.readlines(): 
     line.strip() 
     [a,b]=line.split(' ') 
     dta=datetime.datetime.strptime(a,format) 
     dtb=datetime.datetime.strptime(b,format) 
     diff=dta-dtb 
     print(diff.microseconds) 

"変換されていないデータ"がどのようなものかわかりません。エラーメッセージの「残っている」の後には何もありません。データはまったく何ですか?

Traceback (most recent call last): 
File "<stdin>", line 1, in <module> 
File "/root/.pyenv/versions/3.5.1/lib/python3.5/_strptime.py", line 500, in _strptime_datetime 
    tt, fraction = _strptime(data_string, format) 
File "/root/.pyenv/versions/3.5.1/lib/python3.5/_strptime.py", line 340, in _strptime 
    data_string[found.end():]) 
ValueError: unconverted data remains: 
+0

あなただけの '、使用する場合は、実際にすべてのストリップを必要としません、 b = line.split() '。また、ファイルオブジェクトは反復可能であるため、readlineは必要ありません。ファイルオブジェクトを反復処理するだけです。 –

+0

'a、b = line.split()'でコードの可読性を向上させることができます。この文脈のように '[a、b]'を書く必要はなく、 'a、b'はタプルを構成します。メンバーは' line.split'によって返されたものです。 'str.split'は、デフォルトで区切り文字として空白を使用するため、明示的に指定する必要はありません。 – ForceBru

答えて

4

stripが所定の位置に動作しない、あなたは実際に改行文字を削除するには、それを割り当てる必要があり:

line = line.strip() 
+0

私はモールです。ありがとう –

+0

'line.strip(" ")'も 'line.strip()'と非常に異なっています –

+1

@BillyK、あなたは_not_です。質問することは、これが学習の手段であるためにばかげていることを意味するものではありません。 – ForceBru

関連する問題