python代码中显式非法的字符序列

时间:2015-07-20 09:08:43

标签: python python-2.7

我有一个UTF-8输入文件,它经常包含非法的字符序列。因为它看起来只是那个特定的序列,所以我想用我的Python脚本中的正确等价替换它。

这应该很简单,我想:

value = value.replace('\xE2\x80\x3f', u'”'.encode('utf8'))

但是,脚本没有运行 - 相反,它会抛出一个错误:

SyntaxError: Non-ASCII character '\xe2' in file script.py on line 10, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

是否有编码允许我将任何字符编码为字符串文字,实质上是告诉Python关闭并让我使用我想要的任何无效字符?

(注意:我使用的是Python 2.7)

1 个答案:

答案 0 :(得分:4)

# -*- coding:utf-8 -*-

value = "What an amazing string \xE2\x80\x3f !!"

value = value.replace('\xE2\x80\x3f', u'”'.encode('utf8'))

print value

这是有效的原因是因为Python2解释器将输入脚本文件读取为ASCII文件,并且不解码UTF-8字符。因为您在文件中写了一个显式的UTF-8字符(即),您需要告诉解释器他必须将输入脚本文件读取为UTF-8文件,而不是ASCII文件。

另请参阅有关源代码编码的PEP0263