Template Stringsとstr.format
その他の書式設定ツール
「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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- f-stringの式
- 書式指定子
- 書式ミニ言語
- Template Stringsとstr.format