Python:从文件中读取'\ xc2'打印正常但打印字符串变量具有相同的值失败

时间:2012-07-27 20:13:14

标签: python

    with open(path) as f:
        for line in f:
            print line

path是单行为\xc2

的文件

当我跑步时,我得到了

\xc2

现在让我们改变这个

with open(path) as f:
    for line in f:
                var = '\xc2'
                print var

当我运行时,我看到了

UnicodeDecodeError: 'ascii', '\xc2d', 0, 1, 'ordinal not in range(128)'

然后我尝试比较我做的事情

with open(path) as f:
    for line in f:
        line = line.strip()
        line1 = '\xc2d'
        # print line1
        print line == line1

我看到False

这里发生了什么?

1 个答案:

答案 0 :(得分:2)

当您从文件中读取字符时,\只是另一个字符,没有特殊含义。当你尝试从它创建一个字符串时,它被用作具有特殊含义的转义,具体取决于后面的内容。例如\x表示接下来的2个十六进制数字并创建与十六进制代码对应的字符,因此'\xc2'是单个字符。由于此字符代码不在0到127(0x7f)的ASCII范围内,因此在尝试打印时会出错。