【问题标题】:invalid literal for int() with base 10: \xef\xbb\xbf10以 10 为底的 int() 的无效文字:\xef\xbb\xbf10
【发布时间】:2013-10-28 23:53:51
【问题描述】:

我正在尝试从文件中读取一个数字并将其转换为 int 以便将其与一个值进行比较,但出现此错误:

ValueError:int() 的无效文字,基数为 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。

我做错了什么?

【问题讨论】:

    标签: python


    【解决方案1】:

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

    你正试图比 Python 更聪明。 Python 有一个 csv module 可以正确解析 CSV;使用它而不是修补自己的半生不熟的解析器。

    【讨论】:

    • 这仍然没有解决问题,似乎是编码问题。使用 csv 模块打开 csv 文件并读取第一列仍然给我同样的错误。
    • 在将数据输入 csv 解析器之前自己删除 BOM
    • 我已经删除了记事本“代码”菜单上的 BOM,然后它起作用了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 2020-01-04
    • 2010-12-22
    • 2011-07-07
    • 2019-10-14
    相关资源
    最近更新 更多