文字列に二重引用符があるときにdictで書式設定するのが失敗するのはなぜですか?Python format dictで二重引用符で囲まれた文字列
>>> '%(x)s"%(y)s' % {'x': 1, 'y':2}
'1"2'
注s
文字列:あなたは変換タイプコードを忘れている
'%s"%s' % (1,2)
文字列に二重引用符があるときにdictで書式設定するのが失敗するのはなぜですか?Python format dictで二重引用符で囲まれた文字列
>>> '%(x)s"%(y)s' % {'x': 1, 'y':2}
'1"2'
注s
文字列:あなたは変換タイプコードを忘れている
'%s"%s' % (1,2)
。 %"
が間違っているのと同様に、%(x)"
が間違っています。あなたはほんの少しs
ことを追加する必要があります。
'%(x)s"%(y)s' % {'x': 1, 'y':2}
その手紙は、それが通常のフォーマットに必要とされているのと同じ理由のために必要とされます。これまで通り、d
、03d
、f
なども使用できます。
:で
'%(x)"%(y)' % {'x': 1, 'y':2}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: unsupported format character '"' (0x22) at index 4
は、それは動作します。構文は%(key)conversiontype
です。変換の種類を示す文字がなければ、パーサーは次の文字を選択し、その文字列には"
が含まれています。
string formatting operations documentation:変換指定子は、この順序で発生しなければならない次のコンポーネントを、二つ以上の文字が含まれていると持っている
:
- の開始をマーク
'%'
文字、指定子。- マッピングキー(オプション)。カッコで囲まれた文字列(たとえば、
(somename)
)で構成されます。- 変換フラグ(オプション)。一部の変換タイプの結果に影響します。
- 最小フィールド幅(オプション)。
'*'
(アスタリスク)で指定すると、実際の幅はタプルの次の要素から値で読み込まれ、変換するオブジェクトは最小のフィールド幅とオプションの精度の後になります。- 精度(オプション)。
'.'
(ドット)の後に精度を指定します。'*'
(アスタリスク)と指定すると、タプルの次の要素から実際の幅が読み取られ、変換される値は精度の後になります。- 長さ変更子(オプション)。
- 変換タイプ。
あなたが%s
を使用したのと同様に、あなたが%(x)s
を使用する必要があります(オプションである)項目1と2を与えたが、省略項目7.