2013-10-20 71 views
1

我想從文件中讀取一個數字並將其轉換爲int以便將其與值進行比較,但出現此錯誤:無效的文字爲int()與基10: xef xbb xbf10

ValueError: invalid literal for int() with base 10: \xef\xbb\xbf10

我做這樣的事情:

def check_id(str_id) 
    csvfile = file('strings.csv') 
    for csvline in csvfile: 
     parts = csvline.split('|') 
     if int(parts[0]) == str_id: 
      print "id found" 

裏面的文件就像一個表(這是一個CSV文件),裏面,它看起來像這樣:

10|item 10|description|information|price 

這是文件的一行;有更多的行與幾個ID,所以我想看看文件中是否存在一個ID。

我在做什麼錯?

回答

2

你在某些時候遇到的是BOM (Byte Order Mark),$ EF $ BB $ BF。

你正在努力變得比Python更聰明。 Python有一個csv module,它將正確執行CSV解析;使用它而不是修補你自己的一半解析器。

+0

這仍然沒有解決問題,這似乎是編碼問題。 用csv模塊打開csv文件並讀取第一列仍然給我同樣的錯誤。 – amirelouti

+1

在將數據饋送到csv解析器 –

+0

發現問題之前,您自己刪除BOM,您是對的。非常感謝幫助 – amirelouti

相關問題