ホームページ  >  記事  >  バックエンド開発  >  Python 文字列フォーマットの詳細な紹介

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

不言
不言転載
2019-03-26 11:15:072164ブラウズ

この記事では、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 までご連絡ください。