2013-07-15 31 views
1

檢索線時,這是我在這裏的第一條消息,我希望我不會犯任何錯誤。ValueError異常轉換成int通過getline.linecache

我寫一個Python腳本2.7從作爲外部輸入文件中提供的線的長列表執行線之間的比較。其中一些行只包含數字,在那些我通過getline.linecache檢索後執行簡單的總和。

我的問題是一定數量的我正在錯誤的行後:

ValueError: invalid literal for int() with base 10 

我明白,不知怎的,這與事實有一些問題,當我嘗試轉換做行檢索到整數類型,但根據我讀的每一行應該從內存數據庫中檢索作爲一個字符串,並且的確如果我試圖打印檢索到的值的類型,我得到str。我印刷有問題的值,以便理解爲什麼他們未能被轉換爲int:在第i個包含一些語義錯誤(我正在一些錯線,將其含字母,這當然未能被轉換爲int),但我仍然只能看到數字字符串的錯誤。在所有這些數字串的,我試過len(linecache.getline('input', line_n)),看是否有多餘的字符存在,但我發現「\ n」,它從海峽到int轉換時不給任何問題。

我的輸入文件是由一系列線而完成的,一些數值一些不;這裏有幾行:

1 
id3021-a 
1 
129485768 
129485769 
2 
id2034 
102 
944709842 
944709848 

例如,第4行可以檢索,但不能轉換爲int。我如何將str轉換爲int而不會出錯?

回答

0

我找到了解決辦法!添加一個「0」字符串的開始解決問題(我不知道爲什麼,有問題的行不爲空):

int('0' + linecache.getline('input', line_n)) 

在這裏看到:Trouble converting string to int in Django/Python

相關問題