あなたは、文字列内であなたが他を逃れることができるのと同じ方法でトリプル引用符をエスケープすることができます\
と引用符文字、:
s = """name={0},
address={1},
nickname={2},
age={3},
comments=
\"\"\"
{4}
\"\"\"
"""
厳密に言えば、あなただけの"
文字---現れるのトリプル"""
を防止するのに十分なほどの脱出しなければならない---が、私は、電子を見つけます3つすべてを飾ると、私の意図がより明確になります。
その後...
sf = s.format("alice", "N/A", "alice", 18, "missing person")
print(sf)
print('----')
print(repr(sf))
...生成:
name=alice,
address=N/A,
nickname=alice,
age=18,
comments=
"""
missing person
"""
----
'name=alice,\naddress=N/A,\nnickname=alice,\nage=18,\ncomments=\n"""\nmissing person\n"""\n'
niemmi's answer作品をしていますが、内部'''
と"""
トリプルクォートのミックスを持っていない場合にのみ、文字列引用符文字をバックスラッシュでエスケープする常にが動作します。
うるさ#1:改行
私はs
は最後の3つのエスケープ引用符文字と実際の文字列を終了トリプル引用符の間に改行を保存していることを強調するためにダッシュの行を印刷しました。
s = """[as before...]
\"\"\"
{4}
\"\"\""""
うるさ#2:リテラルから削除するリテラル
の内部s
リテラルの第二次の行をプリザーブドくぼみが第一(左)カラムに対して同一平面でなければなりません。きれいにインデントされたブロックの中に並んでトリプル引用符で囲まれた文字列:
def indents_appear_in_string_literal():
# This looks good but doesn't work right.
s = """name={0},
address={1},
nickname={2},
age={3},
comments=
\"\"\"
{4}
\"\"\"
"""
sf = s.format("alice", "N/A", "alice", 18, "missing person")
print(sf)
print('----')
print(repr(sf))
return
は...リテラルの内側のくぼみに保持されます:これは素晴らしい作品
name=alice,
address=N/A,
nickname=alice,
age=18,
comments=
"""
missing person
"""
----
'name=alice,\n address=N/A,\n nickname=alice,\n age=18,\n comments=\n """\n missing person\n """\n '
感謝を。しかし、何らかの理由で私が使用している実際のテキストはすべての行についてタブを取得するようです。これは正常ですか?その行で新しい行に名前を追加すると、最初にタブが表示されます。私が '' 'と同じ行に入れると、これはその行には起こらないので、それは良いですが、他の行は何らかの理由でタブで始まっています。 –
@JoanVenge ''' ''はすべての空白を保持します。テキストを次の行から始めると、テキストの先頭に '\ n 'が付きます。同様に、テキストを意図している場合は、空白もそこにあります。 – niemmi
ありがとうございました。これは私が使用している文字列です: http://paste.ofcode.org/5uBdzf32hy5BZ7DdrRpYKE なぜ私は本当にタブを取得しているのか分かりません。私がやっているのは、使用フォーマットです。結果を印刷します。 –