私の質問は簡単です。このようにPythonに文字列があると仮定しましょうFoo '" \ Bar
。
それを有効なpython式に変換する正しい方法は何ですか(したがって、単にコピーしてpythonインタープリターに貼り付けるだけで機能します)?'Foo \'" \\ Bar'
と思いましたが'"{}"'.format(some replace magic)
、もっと良い解決策があるはずです。
私の質問は簡単です。このようにPythonに文字列があると仮定しましょうFoo '" \ Bar
。
それを有効なpython式に変換する正しい方法は何ですか(したがって、単にコピーしてpythonインタープリターに貼り付けるだけで機能します)?'Foo \'" \\ Bar'
と思いましたが'"{}"'.format(some replace magic)
、もっと良い解決策があるはずです。
unicode_escape
コーデックを使用できます。これによりbytes
インスタンスが生成されます。
>>> example = 'Foo \'" \\ Bar'
>>> print(example)
Foo '" \ Bar
>>> print(example.encode('unicode_escape'))
b'Foo \'" \\\\ Bar'
>>> example.encode('unicode_escape')
b'Foo \'" \\\\ Bar'
unicode_escape
有効な python 文字列リテラルを明示的に生成します。
Python ソース コードで Unicode リテラルとして適した文字列を生成する
Unicode に戻すには、単純に ASCII からデコードします。
>>> print(example.encode('unicode_escape').decode('ascii'))
Foo '" \\ Bar
>>> example.encode('unicode_escape').decode('ascii')
'Foo \'" \\\\ Bar'
または、次を使用しますrepr()
。
>>> repr(example)
'\'Foo \\\'" \\\\ Bar\''
>>> print(repr(example))
'Foo \'" \\ Bar'
オブジェクトの印刷可能な表現を含む文字列を返します。多くの型について、この関数は、 に渡されたときに同じ値を持つオブジェクトを生成する文字列を返そうとします
eval()
。それ以外の場合、オブジェクトの型の名前と追加情報を含む山かっこで囲まれた文字列が表現されます。多くの場合、オブジェクトの名前とアドレスが含まれます。
文字列の出力はrepr()
、追加の書式設定なしで Python インタープリターに直接貼り付けることができます。
repr()
andは絶対に必要な場合にunicode_escape
のみ引用符をエスケープすることに注意してください。single と double の両方のスタイルの引用が存在する場合にのみ、これらのいずれかがエスケープされます。
>>> print(repr('\''))
"'"
>>> print(repr('\"'))
'"'
>>> print(repr('\'"'))
'\'"'