Python:reading'\xc2&x27;from文件打印很好,但打印具有相同值的字符串变量失败
Python:reading'\xc2&x27;from文件打印很好,但打印具有相同值的字符串变量失败,python,Python,path是单行为\xc2 当我运行这个时,我得到 \xc2 现在让我们改变这个 with open(path) as f: for line in f: print line 当我运行这个时,我看到 with open(path) as f: for line in f: var = '\xc2' print var 然后我试着比较一下我做的事情 UnicodeDecode
path
是单行为\xc2
当我运行这个时,我得到
\xc2
现在让我们改变这个
with open(path) as f:
for line in f:
print line
当我运行这个时,我看到
with open(path) as f:
for line in f:
var = '\xc2'
print var
然后我试着比较一下我做的事情
UnicodeDecodeError: 'ascii', '\xc2d', 0, 1, 'ordinal not in range(128)'
我看到False
这里发生了什么???当你从文件中读取字符时,
\
只是另一个字符,没有特殊意义。但是,当您尝试从它创建字符串时,它被用作转义,根据后面的内容具有特殊含义。例如,\x
意味着取下2个十六进制数字,并创建与十六进制代码对应的字符,因此,'\xc2'
是单个字符。由于此字符代码不在0到127(0x7f)的ASCII范围内,因此在尝试打印时会出现错误。您需要原始字符串<代码>'\xc2d'正在被转义,因此看起来您想要的是r'\xc2d'
,或者'\\xc2d'
@JoelCornett,它实际上被解释为字符代码0xc2(不是Unicode),后跟d
len('\xc2d')
返回2。@MarkRansom:Oops你说得对。
with open(path) as f:
for line in f:
line = line.strip()
line1 = '\xc2d'
# print line1
print line == line1