0
    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

这里发生了什么?

4

1 回答 1

2

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

于 2012-07-27T20:21:14.580 回答