Python 文字列フォーマットの詳細な紹介

不言
リリース: 2019-03-26 11:15:07
転載
2107 人が閲覧しました

この記事では、Python 文字列の書式設定について詳しく説明します。これには特定の参考値があります。必要な友人は参照できます。お役に立てば幸いです。

文字列を書式設定するときに、多くの人が "%s" % v 構文を使用していると思います。PEP 3101 では、より高度な書式設定メソッド str.format() が提案され、Python 3 の標準になります。古い % を置き換えるにはの書式設定構文に基づいて、CPython は 2.6 以降このメソッドを実装しています (他のインタープリタは検証していません)。

format()

新しい format() メソッドは、実際にはテンプレート エンジン (Template Engine) の簡易版に似ており、非常に豊富な機能を備えています。

テンプレート内の置換変数は {} で囲まれ、: で 2 つの部分に分かれています。後半の format_spec については後で別途説明します。

前半には 3 つの用途があります:

  • empty
  • 位置を表す数字
  • キーワードの識別子

これは関数呼び出しのパラメーター カテゴリと一致しています

print("{} {}".format("Hello", "World"))
# 等同于以下几种
print("{0} {1}".format("Hello", "World"))
print("{hello} {world}".format(hello="Hello", world="World"))
print("{0}{1}{0}".format("H", "e"))

# Hello World
# Hello World
# Hello World
# HeH
ログイン後にコピー

さらに、関数パラメーターのアンパックと同様に、アンパック操作も format()

print("{author}.{city}".format(**{"author": "Miracle", "city": "上海"}))
print("{} {}".format(*["Miracle", "上海"]))

Miracle.上海
Miracle 上海
ログイン後にコピー
## で直接使用できます。 #テンプレートでは、.identifier と [key] を介して変数の属性または値を取得することもできます (「{}{}」は「{0}{1}」と同等であることに注意してください) )

data = {'author': 'Miracle', 'like': 'papapa'}
print("Author: {0[author]}, Like: {0[like]}".format(data))
langs = ["Python", "Ruby"]
print("{0[0]} vs {0[1]}".format(langs))

print("\n====\nHelp(format):{.__doc__}".format(str.format))

# Name: Python, Score: 100
# Python vs Ruby

# ====
# Help(format):
#  S.format(*args, **kwargs) -> str
ログイン後にコピー
強制変換、置換された変数を ! r|s|a

    "{!r}" で強制的に変換できます
  • # 変数に対して repr() を呼び出します##"{ !s}" 変数に対して str() を呼び出します。
  • "{!a}" 変数に対して ascii() を呼び出します。
  • コロンの後の部分は、出力スタイル

align は整列方向を表し、通常幅と組み合わせて使用​​されます。fill は塗りつぶし文字 (デフォルトは空白) です。

for align, text in zip("<^>", ["left", "center", "right"]):
   # 务必看懂这句话
   print("{:{fill}{align}16}".format(text, fill=align, align=align))

print("{:0=10}".format(100)) # = 只允许数字

# left<<<<<<<<<<<<
# ^^^^^center^^^^^
# >>>>>>>>>>>right
# 0000000100
ログイン後にコピー

同時に、次のことがわかります。 {} はスタイル設定でネストできますが、キーワード Specified を渡す必要があり、ネストできるのは 1 レベルのみです。

次のステップは記号スタイルです: |-|' ' は、数値に必須の記号が必要かどうかをそれぞれ指定します (スペースは、数値が正の場合には表示されないことを意味しますが、1 つのスペースが予約されます)。

print("{0:+}\n{1:-}\n{0: }".format(3.14, -3.14))

# +3.14
# -3.14
# 3.14
ログイン後にコピー

使用 特別な形式 (2 進数、16 進数など) で数値を表すために接頭辞記号が必要かどうかを指定します。

カンマは、数値を千の位で区切る必要があるかどうかを表すためにも使用されます。 place

0 は前の {:0=} と同等で、右揃えで 0 で埋められます

print("Binary: {0:b} => {0:#b}".format(3))
print("Large Number: {0:} => {0:,}".format(1.25e6))
print("Padding: {0:16} => {0:016}".format(3))

# Binary: 11 => 0b11
# Large Number: 1250000.0 => 1,250,000.0
# Padding:                3 => 0000000000000003
ログイン後にコピー

最後に、Xiaopang はよく知られた小数点精度の問題、.n と .n を紹介します。書式設定の種類。

ここでは一部の例のみを示します。詳細についてはドキュメントを参照してください:

from math import pi
print("pi = {pi:.2}, also = {pi:.7}".format(pi=pi))

# pi = 3.1, also = 3.141593
ログイン後にコピー

Integer

for t in "b c d #o #x #X n".split():
   print("Type {0:>2} of {1} shows: {1:{t}}".format(t, 97, t=t))

# Type  b of 97 shows: 1100001
# Type  c of 97 shows: a
# Type  d of 97 shows: 97
# Type #o of 97 shows: 0o141
# Type #x of 97 shows: 0x61
# Type #X of 97 shows: 0X61
# Type  n of 97 shows: 97
ログイン後にコピー

Float

for t, n in zip("eEfFgGn%", [12345, 12345, 1.3, 1.3, 1, 2, 3.14, 0.985]):
   print("Type {} shows: {:.2{t}}".format(t, n, t=t))

# Type e shows: 1.23e+04
# Type E shows: 1.23E+04
# Type f shows: 1.30
# Type F shows: 1.30
# Type g shows: 1
# Type G shows: 2
# Type n shows: 3.1
# Type % shows: 98.50%
ログイン後にコピー

String (default)

try:
   print("{:s}".format(123))
except:
   print("{}".format(456))

# 456
ログイン後にコピー

この記事はここで終了しています。さらにエキサイティングなコンテンツについては、PHP 中国語 Web サイトの

Python ビデオ チュートリアル

列に注目してください。

以上がPython 文字列フォーマットの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:segmentfault.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!