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 つの 16 進数を取得し、16 進数コードに対応する文字を作成することを意味します。つまり'\xc2'、1 つの文字です。この文字コードは ASCII の 0 ~ 127 (0x7f) の範囲にないため、印刷しようとするとエラーが発生します。

于 2012-07-27T20:21:14.580 に答える