2012-02-18 13 views
8

文字列をtxtファイルからintのリストに変換しようとしています。私は、各行を返す素敵なコードスニペットを見つけて、それをintに変換しようとしました。問題は数値が科学的表記であり、このエラーが発生することです。ValueError:基数10のint()の無効なリテラル: '3.404788e-001'です。Pythonの文字列(科学的表記法)をintに変換する

これは、私は精度を維持することはあなたにいかに重要であるかに応じて、浮動小数点数のため

data = [] 
rawText = open ("data.txt","r") 

for line in rawText.readlines(): 
    for i in line.split(): 
     data.append(int(i)) 

print data[1] 
rawText.close() 
+0

これらは単なる「科学的表記法」ではない。それらは非整数を表す。あなたは入力 '3.404788e-001'のためにどんな結果を得ることを望んでいましたか? –

答えて

14

使用float(i)またはdecimal.Decimal(i)いじりてきたコードです。
floatは、機械精度の浮動小数点で数値を格納しますが、Decimalは完全な精度を維持しますが、処理速度は遅くなります。
また、開いているファイルを繰り返し処理することができます。readlines()を使用する必要はありません。
そして、単一のリスト内包表記は、あなたが必要なものがすべて行うことができます:あなたは本当に整数のみが必要な場合、あなたはあなたの文字列がfloatのように見えるint(float(number))

4

使用するので、float最初に変換することができ

data = [float(number) 
     for line in open('data.txt', 'r') 
     for number in line.split()] 

を。

関連する問題