2012-03-26 32 views
1

Pythonのdoctestの文字列エスケープ問題

r''' 
>>> uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
'\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
''' 

私はこの結果を取得しています:

Failed example: 
    uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
Expected: 
    '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
Got: 
    '\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

文字列が等価であるため、テストに合格しなければなりません。しかし、 "Got:"文字列では、\xHHエスケープの一部を対応するASCII文字に変換しましたが、 "Expected:"文字列ではこれを行っていません。

私はドキュメンテーション文字列の物乞いで'''r'''を変更した場合、私の代わりにこれを取得:

Failed example: 
    uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
Expected: 
    '???_)L?hX|??hn' 
Got: 
    '\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

私は2つの文字列がdoctestの中で一致して取得できますか?

答えて

0

はこの考えてみましょう:'\x5f''_')のような

>>> '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
'\x8e\xd2\xd3_)\x11L\x10\xadhX|\x96\xb4hn' 

文字をrepr()コールに彼らは短い形式に変換されますので、印刷可能なASCII値を持っています。これはあなたが望むものではないので、フルバージョンと比較したい場合は、

>>> uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') == \ 
... '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
True 
のようなものが必要になります
0

おっと、私は質問してから10秒後にそれを理解しました。私はそれがこのように働いて得た:

r''' 
>>> a = uuid_hex_to_binary('8ed2d35f-2911-4c10-ad68-587c96b4686e') 
>>> b = '\x8e\xd2\xd3\x5f\x29\x11\x4c\x10\xad\x68\x58\x7c\x96\xb4\x68\x6e' 
>>> a == b 
True 
''' 
関連する問題