Skip to main content
 首页 » 编程设计

python之在 Python 中处理非 ASCII 字符的可靠方法

2025年05月04日14zhujiabin

我有一列电子表格,其标题包含非 ASCII 字符,因此:

'Campaign' 

如果我将这个字符串弹出到解释器中,我得到:

'\xc3\xaf\xc2\xbb\xc2\xbfCampaign' 

该字符串是 rows 中的键之一的 csv.DictReader()

当我尝试用 value 填充新字典时这个键的:

spends['Campaign'] = 2 

我得到:

Key Error: '\xc3\xaf\xc2\xbb\xc2\xbfCampaign' 

如果我打印行的键的值,我可以看到它是 '\xef\xbb\xbfCampaign'

很明显,我可以更新我的程序来访问这个 key :

spends['\xef\xbb\xbfCampaign'] 

但是在 Python 中是否有“更好”的方法来做到这一点?实际上,如果此键的值每次都更改为包含其他非 ASCII 字符,那么处理所有可能出现的所有非 ASCII 字符的包罗万象的方法是什么?

请您参考如下方法:

您的具体问题是文件的前三个字节,"\xef\xbb\xbf"。这是 字节顺序掩码 的 UTF-8 编码,并且通常添加到文本文件前面以表明它们是使用 UTF-8 编码的。你应该剥离这些字节。参见 Removing BOM from gzip'ed CSV in Python .

其次,您正在使用错误的编解码器进行解码。 "" 是使用 Windows-1252 字符集对这些字节进行解码时得到的结果。这就是为什么在源文件中使用这些字符时字节看起来不同的原因。查看Python 2 Unicode howto .