2

私の質問は簡単です。このようにPythonに文字列があると仮定しましょうFoo '" \ Bar

それを有効なpython式に変換する正しい方法は何ですか(したがって、単にコピーしてpythonインタープリターに貼り付けるだけで機能します)?'Foo \'" \\ Bar'

と思いましたが'"{}"'.format(some replace magic)、もっと良い解決策があるはずです。

4

2 に答える 2

3

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('\'"'))
'\'"'
于 2013-04-22T09:30:12.517 に答える