[解決済み] Python 3 の文字列フォーマット
2022-09-05 01:17:01
質問
Python 2でやっています。
"(%d goals, $%d)" % (self.goals, self.penalties)
これのPython3バージョンは何ですか?
ネットで例を検索してみましたが、Python 2のバージョンばかり出てきます。
どのように解決するのですか?
ここで ドキュメント を参照してください。例としては、以下のようになります。
"({:d} goals, ${:d})".format(self.goals, self.penalties)
もし
goals
と
penalties
が整数である場合 (つまりそのデフォルトの書式でOK)、次のように短縮される可能性があります。
"({} goals, ${})".format(self.goals, self.penalties)
また、パラメータは
self
のフィールドなので、1つの引数を2回使ってやる方法もあります(@Burhan Khalidがコメントで指摘しています)。
"({0.goals} goals, ${0.penalties})".format(self)
説明する。
-
{}
は、次の位置引数だけをデフォルトの書式で指定することを意味します。 -
{0}
は、インデックス0
を意味し、デフォルトの書式で表示されます。 -
{:d}
は次の位置引数で、10進整数値形式です。 -
{0:d}
はインデックスを持つ引数0
であり、10進整数形式である。
引数を選択する際にできることは他にもたくさんあり(位置指定引数の代わりに名前付き引数を使う、フィールドにアクセスする、など)、同様に書式オプションもたくさんあります(数値のパディング、千区切り文字の使用、符号の表示/非表示、など)。他の例をいくつか挙げます。
"({goals} goals, ${penalties})".format(goals=2, penalties=4)
"({goals} goals, ${penalties})".format(**self.__dict__)
"first goal: {0.goal_list[0]}".format(self)
"second goal: {.goal_list[1]}".format(self)
"conversion rate: {:.2f}".format(self.goals / self.shots) # '0.20'
"conversion rate: {:.2%}".format(self.goals / self.shots) # '20.45%'
"conversion rate: {:.0%}".format(self.goals / self.shots) # '20%'
"self: {!s}".format(self) # 'Player: Bob'
"self: {!r}".format(self) # '<__main__.Player instance at 0x00BF7260>'
"games: {:>3}".format(player1.games) # 'games: 123'
"games: {:>3}".format(player2.games) # 'games: 4'
"games: {:0>3}".format(player2.games) # 'games: 004'
注意してください。 他の人が指摘したように、新しいフォーマットは前者に取って代わるものではなく、両方ともPython 3とPython 2の新しいバージョンの両方で利用可能です。好みの問題だと言う人もいるかもしれませんが、IMHO は新しい方が古いものよりずっと表現力が豊かで、新しいコードを書くときはいつも使うべきです (もちろん、古い環境をターゲットにしている場合を除きます)。
関連
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] 範囲指定された浮動小数点数のランダムな配列を生成します。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】変数の値を文字列の中に入れるには?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] バブルソートの宿題
-
[解決済み] SQLAlchemy: 日付フィールドをフィルタリングする方法は?
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] データフレームをソートした後にインデックスを更新する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] Pythonで0xを使わずにhex()を使うには?
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複