この記事では、Python プログラミングにおける str.format() の基本的な構文と高度な使用法を主に紹介します。非常に詳細であり、気に入っていただけると幸いです
1。
Python では + を使用して文字列を連結できます。これは単純な場合にうまく機能します。しかし、複雑な文字列の連結を実行する必要がある場合、まだ + を使用して完成させると、コードがわかりにくくなるだけでなく、コードの保守も困難になります。現時点では、この方法では不十分です。
たとえば、次のようなレコードを印刷したいとします:
User:John has completed Action:payment at Time:13:30:00
プラス記号を使用する場合は、次の形式になります。
print "User:" + user_name + " has completed Action:" + \
action_name + " at Time:" + current_time
ログイン後にコピー
将来このコードを読み返した場合、その出力形式を直感的に確認するのは難しく、修正するのは比較的面倒になるでしょう。
代わりに % を使用できます:
print "User:%s has completed Action:%s at Time:%s" % \
(user_name, action_name, current_time)
ログイン後にコピー
今回は、コードがより明確かつ簡潔になります。
しかし、Python は別のシンプルでエレガントな実装方法を提供しており、これはより公式に推奨されている方法でもあります: str.format() を使用して文字列をフォーマットします:
print "User:{} has completed Action:{} at Time:{}".format(
user_name, action_name, current_time)
ログイン後にコピー
str.format の両方で使用できます。単純なシナリオに対応し、面倒な文字列連結操作を行わずに複雑な文字列を置換することもできます。 Python の組み込み型 str と unicode は両方とも、文字列をフォーマットするための str.format() の使用をサポートしています。
次に、str.format() の具体的な使用法について詳しく説明します。
2. str.format の基本構文
フォーマット文字列は、置換される文字列である置換フィールドを中括弧 {} で囲みます。中括弧で囲まれていない文字は、結果にそのまま表示されます。
2.1. 位置インデックスの使用
次の 2 つの書き方は同等です:
"Hello, {} and {}!".format("John", "Mary")
"Hello, {0} and {1}!".format("John", "Mary")
中括弧内に対象文字列のインデックスを書くことも、省略することもできます。省略した場合は、書式括弧で囲まれた対象文字列の順に置換されます。
2.2. キーワードインデックスの使用
位置を使用してターゲット文字列を指定することに加えて、キーワードを使用して指定することもできます。
例:
"Hello, {boy} and {girl}!".format(boy="John", girl="Mary")
ログイン後にコピー
キーワードインデックスを使用する利点は、パラメータの位置を気にする必要がなく、文字列の最終結果が一目でわかることです。将来のコードのメンテナンスでは、文字列に対して対応するパラメーターを 1 つずつ検索する必要がなく、対応するパラメーターをすばやく変更できます。
注: 文字列自体に中括弧が含まれている場合は、中括弧をエスケープするために中括弧を 2 回繰り返す必要があります。たとえば、文字列自体に { が含まれている場合、これが置換フィールドを囲むために使用される中括弧ではなく通常の文字であることを Python に知らせるために、単に {{ に書き換えます。
3. str.format の高度な構文
str.format は、日常業務で発生するフォーマットされた出力を完了するのに十分強力です。この方法に習熟すると、将来の文字列処理のための強固な基盤を築き、時間を大幅に節約できます。
3.1. パラメータの属性または要素へのアクセス
str.format を使用して文字列をフォーマットする場合、通常はターゲット文字列をパラメータとして format メソッドに渡します。実際、フォーマット文字列内のパラメーターの特定の属性または要素にアクセスすることもできます。
"My car is {0.color}.".format(black_car)
"The first students is {student[ 0]} .".format(student=stu_list)
"John is {d[john]} years old.".format(d=age_dict)
3.2. パラメータ出力変換
パラメータの文字列出力、デフォルトはそのによって実装されます独自の __format__ メソッド。つまり、Python は置換フィールドの代わりにパラメーターの __format__ 出力を使用します。 str() または repr() を呼び出してパラメータを変換したい場合は、変換フラグを追加することで実行できます:
# call str() on argument
"It's a {0!s}."
#call repr() on argument
"We can get info from {name!r}."
ログイン後にコピー
4. str.format の一般形式
フォーマットされた文字列は次のとおりです:
"... {field_name!conversion:format_spec} ..."
上記のコードからわかるように、フォーマット文字列は field_name、conversion の 3 つの部分に分割できます。 、および format_spec 。それぞれ、置換フィールド名 (インデックス)、変換フラグ、形式の説明に対応します。このうち、フィールド名は必須ですが、後の 2 つはオプションです。変換フラグは感嘆符の後に続き、形式の説明はコロンの後に続きます。
前に述べたように、フィールド名は位置インデックスとキーワード インデックスの両方にすることができます。フィールド名の後にドットを続けて属性にアクセスしたり、角括弧を続けて要素にアクセスしたりできます。
ここでは、形式の説明 (format_spec) に焦点を当てます。
形式の説明には、fill、align、sign、width、precision、type の 6 つのオプションが含まれています。 それらの位置関係は次のとおりです:
[[fill]align][sign][#][0][width][,][.precision][type]
fill
は任意の文字にすることができ、デフォルトは空間。
align
最小幅が指定されている場合にのみ有効です。
< 左揃え (デフォルトのオプション)
> 右揃え
= 記号と数字の間に埋め込み文字を入れる (例: +0001234)
^ 中央揃え
sign
数字のみに有効
+ すべての数字 すべて符号付きです
- 負の数値のみが符号付きです (デフォルトのオプション)
つまり、正の数値の前にはスペースがあり、負の数値の前には符号が付きます
'#'
整数にのみ有効です
2 進数、8 進数、および 8 進数に自動的に変換されます16 進数 対応する 0b、0o、0x を値の前に追加します。
','
3 つの数字ごとに区切り文字、, を自動的に追加します。
width
最小幅を定義する 10 進数。指定しない場合は、コンテンツの幅によって決まります。
配置が指定されていない場合は、width の前に 0 を追加して自動的に 0 を埋めることができます。これは、fill を 0 に設定し、align を = に設定するのと同じです。
精度
浮動小数点数の精度、または文字列の最大長を決定するために使用されます。整数値には使用できません。
type
パラメータのタイプを決定します。デフォルトは文字列である s です。
整数出力タイプ:
b: バイナリ形式で出力
c: 整数を対応する Unicode 文字に変換
d: 10 進数で出力 (デフォルト オプション)
o: 8 進数で出力
x: 16 進数の小文字で出力
メソッド出力、指数部を表すために e を使用します。デフォルトの精度は 6
E: e と同じですが、指数部を表すために大文字の E を使用します
f: 値を固定小数点形式で出力します。デフォルトの精度は 6
F : f
g と同じ: 一般形式; 指定された精度 p >= 1 の場合、値の p 桁の有効桁を取得し、固定小数点または科学的表記法で出力します (デフォルト オプション)
G: 一般形式; 値が大きすぎる場合は g と同じ 指数部を表すのに E を使用します
n: g と同じですが、各 3 桁の数値を区切るために現在の環境の区切り文字を使用します
%: パーセント記号を使用します。パーセンテージの値を出力し、f マークを設定します
関連する推奨事項:
PHP インターセプト関数 intercept_str の詳細な説明
以上がPython_pythonのstr.format()の詳細説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。