Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:reading'\xc2&x27;from文件打印很好,但打印具有相同值的字符串变量失败_Python - Fatal编程技术网

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