次のように、後で置換するためにプレースホルダーを含む文字列を取得する必要があります。
"A %s B %s"
そしてそれを次のように変えます:
"A {0} B {1}"
私は思いついた:
def _fix_substitution_parms(raw_message):
rv = raw_message
counter = 0
while '%s' in rv:
rv = rv.replace('%s', '{' + str(counter) + '}', 1)
counter = counter + 1
return rv
それは機能しますが、非常に不格好で、「慣用的な」Pythonではありません。
よくできた慣用的なpythonソリューションはどのように見えますか?
明確化のための更新:
- 結果の文字列はPython内では使用されません。私はないそこにカウンター番号を必要とします!(それで
{}十分ではありません)! %sメッセージは使用するだけであることが保証されているため、文字列についてのみ気にする必要があります%s(まったく使用し%i %fない)
「re.sub」は、番号付きブレースで動的に置換するための置換として関数を使用できます。ちなみに、数字のない{}で置き換えることもできます。
—
Michael Butscher
あなたが働いて解決策を持っていて、それを改善したい場合は、codereview.stackexchange.comをご検討ください
—
小次郎
@kojiro「不格好すぎる」ため、私にとってはうまくいきません;-)
—
GhostCatはモニカCに敬意を表します。