2012-02-18 38 views
8

我試圖將一組字符串從txt文件轉換爲列表中的int。我能夠找到一個很好的代碼片段,它返回每一行,然後我嘗試將它轉換爲一個int。問題是這些數字是用科學計數法表示的,我得到這個錯誤:ValueError:int()的基數爲10的無效文字:'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」的結果究竟是什麼? – 2012-02-18 04:57:39

回答

14

使用float(i)decimal.Decimal(i)浮點數,這取決於保持精度如何重要的是你。
float將存儲機器精度IEEE浮點數,而Decimal將保持完整精度,代價是速度較慢。
此外,您可以遍歷一個打開的文件,您不需要使用readlines()
和一個列表解析可以做你需要的一切:

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

如果你真的只需要整數,則可以使用int(float(number))

4

你的字符串看起來像一個float,所以它轉換成float第一。