Ηλί*_*ίας 11 python byte-order-mark utf-8 character-encoding
假设我正在读取包含3个逗号分隔数字的文件.该文件使用未知编码保存,到目前为止我正在处理ANSI和UTF-8.如果文件是UTF-8并且它有1行,值为115,113,12,那么:
with open(file) as f:
a,b,c=map(int,f.readline().split(','))
Run Code Online (Sandbox Code Playgroud)
会抛出这个:
invalid literal for int() with base 10: '\xef\xbb\xbf115'
Run Code Online (Sandbox Code Playgroud)
第一个数字总是被这些'\ xef\xbb\xbf'字符破坏.对于其余2个数字,转换工作正常.如果我用''手动替换'\ xef\xbb\xbf'然后进行int转换它将起作用.
对于任何类型的编码文件,有更好的方法吗?
tzo*_*zot 17
import codecs
with codecs.open(file, "r", "utf-8-sig") as f:
a, b, c= map(int, f.readline().split(","))
Run Code Online (Sandbox Code Playgroud)
这适用于Python 2.6.4.该codecs.open调用打开文件并以unicode形式返回数据,从UTF-8解码并忽略初始BOM.
| 归档时间: |
|
| 查看次数: |
9596 次 |
| 最近记录: |