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