23

文字列の書式設定を使用して単語を大文字にすることはできますか? 例えば、

"{user} did such and such.".format(user="foobar")

「Foobar did such and such」を返す必要があります。

私はよく知っていることに注意してください.capitalize(); ただし、これは私が使用している(非常に単純化されたバージョンの)コードです。

printme = random.choice(["On {date}, {user} did la-dee-dah. ",
                         "{user} did la-dee-dah on {date}. "
                         ])

output = printme.format(user=x,date=y)

ご覧のとおり、 のように定義するだけuserx.capitalize().format()機能しません。最初のシナリオにも (誤って) 適用されてしまうからです。そして、運命を予測することはできないので、どちらrandom.choiceが選ばれるかを事前に知る方法はありません. 私に何ができる?

追加の注記:実際には ~40 以上の文字列から選択するため、単に実行するoutput = random.choice(['xyz'.format(),'lmn'.format()])(つまり、各文字列を個別にフォーマットして.capitalize()から、必要な文字列に使用する) ことは実行可能なオプションではありません。printme

4

4 に答える 4

11

この軽量オプションのように、追加の値を渡して使用しないようにすることができます

printme = random.choice(["On {date}, {user} did la-dee-dah. ",
                         "{User} did la-dee-dah on {date}. "
                         ])

output = printme.format(user=x, date=y, User=x.capitalize())

最良の選択は、おそらく、独自の本格的なFormatter.

于 2013-07-25T03:20:58.123 に答える
10

文字列のリケースに使用できるstring.Formatterカスタム変換を認識できる独自のサブクラスを作成できます。

myformatter.format('{user!u} did la-dee-dah on {date}, and {pronoun!l} liked it. ',
                      user=x, date=y, pronoun=z)
于 2013-07-25T03:02:16.790 に答える