以下が失敗するのはなぜですか?
assert ascii("cat") == "cat" => False
(Pythonの文字列の比較/ ASCII関数が終了した後の文字列のエンコーディングと関係があると思います。)
以下が失敗するのはなぜですか?
assert ascii("cat") == "cat" => False
(Pythonの文字列の比較/ ASCII関数が終了した後の文字列のエンコーディングと関係があると思います。)
これは、の出力ascii
が次のようなものだからです。
>>> ascii('cat')
"'cat'"
ただの とは明らかに違い'cat'
ます。
ascii
文字列オブジェクトと一緒に、または文字列オブジェクトを再生成するrepr
ために使用できる、文字列オブジェクトのバージョンを返します。eval
ast.literal_eval
>>> eval (ascii('cat'))
'cat'
>>> from ast import literal_eval
>>> literal_eval(ascii('cat'))
'cat'
ドキュメントから:
関数は、
str()
かなり人間が読める値の表現を返すことを意図してrepr()
いますが、インタープリターが読み取ることができる表現を生成することを意図しています (または、SyntaxError
同等の構文がない場合は a を強制します)。人間が消費する特定の表現を持たないオブジェクトの場合、str()
は と同じ値を返しますrepr()
。数値やリストや辞書などの構造体などの多くの値は、どちらの関数を使用しても同じ表現になります。特に、文字列と浮動小数点数には2 つの異なる表現があります。