Python Academy · レッスン

Template Stringsとstr.format

その他の書式設定ツール

レッスン 4/413 ステップ

「Template Stringsとstr.format」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

その他の書式設定ツール

f-string以外にも、Pythonには書式設定のツールが2つあります。str.format()メソッドとstring.Templateクラスです。それぞれ適した状況が異なります。

print('Hello, {}!'.format('World'))

str.formatの基本

str.format()は、引数を順番に使って{}のプレースホルダーを置き換えます。f-stringより前から存在し、現在も多くのコードで使われています。

msg = '{} is {} years old'.format('Ada', 36)
print(msg)

位置インデックス

波括弧の中に数値を入れると、引数を位置によって再利用したり順序を入れ替えたりできます。

print('{0} {1} {0}'.format('echo', 'once'))

名前付きプレースホルダー

波括弧の中に名前を入れ、キーワード引数を渡します。これにより、テンプレート自体が処理内容を説明する形になります。

print('{name} scored {score}'.format(name='Lin', score=95))

書式指定も使用可能

str.formatではコロンの後に同じミニ言語を使用できるため、幅、精度、寄せ方を制御できます。

print('{:.2f}'.format(3.14159))
print('{:>8}'.format('hi'))

辞書からの書式設定

**を使って辞書をstr.formatにアンパックすると、名前付きプレースホルダーを埋められます。

data = {'city': 'Rome', 'temp': 27}
print('{city}: {temp} C'.format(**data))

Template文字列の導入

string.Templateは$を使ったプレースホルダーを使用します。意図的にシンプルに作られており、任意の式を実行できないため、ユーザーが指定するテンプレートを扱う場合により安全です。

from string import Template
t = Template('Hello, $name!')
print(t.substitute(name='World'))

分かりやすくするための波括弧

プレースホルダー名が他のテキストに隣接している場合は、${name}のように波括弧で囲みます。

from string import Template
t = Template('${item}s cost $$5')
print(t.substitute(item='apple'))

safe_substitute

substituteは、名前が見つからない場合にKeyErrorを発生させます。一方、safe_substituteは未知のプレースホルダーをそのまま残します。

from string import Template
t = Template('$greeting, $name')
print(t.safe_substitute(greeting='Hi'))

使い分け

目安として、普段のコードにはf-stringを優先してください。テンプレートをデータから分離する場合はstr.formatを使用します。信頼できないユーザー提供のテンプレートにはTemplateを使用してください。

name = 'Sam'
print(f'f-string: {name}')
print('format: {}'.format(name))

外部テキストからのテンプレート

テンプレートのテキストは単なる文字列なので、設定ファイルやデータベースから読み込み、実行時に値を置換できます。

from string import Template
stored = 'Order $id ships to $city'
t = Template(stored)
print(t.substitute(id=7, city='Oslo'))

クイックチェック

信頼できないユーザーが提供したテンプレートに値を置換するには、どのツールが最も安全ですか?

復習:Template Strings と str.format

f文字列の代替手段をまとめます。

  • str.format() は {} プレースホルダーを使用し、位置指定、名前付き指定、および完全な書式指定に対応します。
  • string.Template は $name プレースホルダーを使用し、信頼できない入力に対して安全です。
  • safe_substitute は未知のプレースホルダーをそのまま残します。
  • 通常のコードでは f文字列を優先し、テンプレートが外部から提供される場合や信頼できない場合は、これらのツールを使用します。
from string import Template
print(Template('Bye, $who').substitute(who='all'))
print('Done: {}'.format(True))
無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
76
レッスン
320

よくある質問

「Template Stringsとstr.format」レッスンは無料ですか?

はい。「Template Stringsとstr.format」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「Template Stringsとstr.format」で何を学びますか?

その他の書式設定ツール ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「Template Stringsとstr.format」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. f-stringの式
  2. 書式指定子
  3. 書式ミニ言語
  4. Template Stringsとstr.format
← Python Academyに戻る