2

以下が失敗するのはなぜですか?

assert ascii("cat") == "cat" => False

(Pythonの文字列の比較/ ASCII関数が終了した後の文字列のエンコーディングと関係があると思います。)

4

1 に答える 1

5

これは、の出力asciiが次のようなものだからです。

>>> ascii('cat')
"'cat'"

ただの とは明らかに違い'cat'ます。

ascii文字列オブジェクトと一緒に、または文字列オブジェクトを再生成するreprために使用できる、文字列オブジェクトのバージョンを返します。evalast.literal_eval

>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'

ドキュメントから:

関数は、str()かなり人間が読める値の表現を返すことを意図してrepr()いますが、インタープリターが読み取ることができる表現を生成することを意図しています (または、 SyntaxError同等の構文がない場合は a を強制します)。人間が消費する特定の表現を持たないオブジェクトの場合、str()は と同じ値を返しますrepr()。数値やリストや辞書などの構造体などの多くの値は、どちらの関数を使用しても同じ表現になります。特に、文字列と浮動小数点数には2 つの異なる表現があります。

于 2013-07-02T06:30:45.067 に答える