2013-10-20 32 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

相关问题