web-dev-qa-db-ja.com

printステートメントを使用するときに特殊文字を表示する

Print文を使用するときにエスケープ文字を表示したいと思います。例えば。

a = "Hello\tWorld\nHello World"
print a
Hello   World
Hello World

「Hello\tWorld\nHello\sWorld」と表示させたい

77
Ian Phillips

repr を使用します。

a = "Hello\tWorld\nHello World"
print repr(a)
# 'Hello\tWorld\nHello World'

スペースに対して\sを取得しないことに注意してください。タイプミスだったらいいのに…?

ただし、スペースに\sが本当に必要な場合は、次のようにすることができます。

print repr(a).replace(' ',r'\s')
142
unutbu

単に文字列をそのまま印刷したいのですか、それとも文字列の内部表現にしたいのですか?後者の場合は、rr"Hello\tWorld\nHello World"を前に付けて raw string として作成します。

>>> a = r"Hello\tWorld\nHello World"
>>> a # in the interpreter, this calls repr()
'Hello\\tWorld\\nHello World'
>>> print a
Hello\tWorld\nHello World

また、\sは、正規表現を除き、エスケープ文字ではありません。そのため、使用目的とはかなり異なる意味を持ちます。

14
robert