在Python中UTF-8的数字处理
-
23-09-2019 - |
题
假设我读含有3逗号文件分隔的数字。该文件被保存与未知的编码,到目前为止,我处理ANSI和UTF-8。如果该文件是UTF-8,它有1行与当时值115,113,12:
with open(file) as f:
a,b,c=map(int,f.readline().split(','))
将引发这样的:
invalid literal for int() with base 10: '\xef\xbb\xbf115'
的第一个号码总是与这些 '\ XEF \ XBB \ XBF' 字符错位。对于剩下的2个数字转换工作正常。如果我手动更换“\ XEF \ XBB \ XBF”与“”,然后执行INT转换它将工作。
是否有这样做的任何类型的编码文件的一个更好的办法?
解决方案
import codecs
with codecs.open(file, "r", "utf-8-sig") as f:
a, b, c= map(int, f.readline().split(","))
这个作品在Python 2.6.4。所述codecs.open
呼叫打开文件,并返回数据以Unicode,从UTF-8解码并忽略初始BOM。
其他提示
你看到的是UTF-8编码的 BOM ,或“字节顺序标记”。 BOM不需要通常用于UTF-8的文件,所以最好的方法来处理它可能是打开与一个UTF-8编码解码器的文件,并跳过如果U+FEFF
字符存在。
不隶属于 StackOverflow