ホームページ バックエンド開発 Python チュートリアル Python の文字列フォーマット str.format の詳細な紹介

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

Feb 20, 2017 am 10:03 AM

はじめに

Python はバージョン 2.6 で新しい文字列書式設定メソッド str.format() を追加しました。基本的な構文は、前の % を {} と : に置き換えます。 str.format() 。它的基本语法是通过 {} 和 : 来代替以前的 %.。

格式化时的占位符语法:

replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
ログイン後にコピー

“映射”规则

通过位置

str.format() 可以接受不限个参数,位置可以不按顺序:

>>> "{0} {1}".format("hello", "world")
'hello world'
>>> "{} {}".format("hello", "world")
'hello world'
>>> "{1} {0} {1}".format("hello", "world")
'world hello world'
ログイン後にコピー

通过关键字参数

使用关键参数时字符串中需要提供参数名:

>>> "I am {name}, age is {age}".format(name="huoty", age=18)
'I am huoty, age is 18'
>>> user = {"name": "huoty", "age": 18}
>>> "I am {name}, age is {age}".format(**user)
'I am huoty, age is 18'
ログイン後にコピー

通过对象属性

str.format()

フォーマット時のプレースホルダー構文:

>>> class User(object):
...  def __init__(self, name, age):
...   self.name = name
...   self.age = age
...   
...  def __str__(self):
...   return "{self.name}({self.age})".format(self=self)
...  
...  def __repr__(self):
...   return self.__str__()
...  
...
>>> user = User("huoty", 18)
>>> user
huoty(18)
>>> "I am {user.name}, age is {user.age}".format(user=user)
'I am huoty, age is 18'
ログイン後にコピー

位置による

str.format() は受け入れられます限界

>>> names, ages = ["huoty", "esenich", "anan"], [18, 16, 8]
>>> "I am {0[0]}, age is {1[2]}".format(names, ages)
'I am huoty, age is 8'
>>> users = {"names": ["huoty", "esenich", "anan"], "ages": [18, 16, 8]}
>>> "I am {names[0]}, age is {ages[0]}".format(**users)
ログイン後にコピー

キーワードパラメータごと

キーパラメータを使用する場合、パラメータ名を文字列で指定する必要があります:

 conversion ::= "r" | "s" | "a"
ログイン後にコピー

オブジェクト属性による str.format() ユーザー属性を直接読み取ることができます:

>>> "repr() shows quotes: {!r}; str() doesn't: {!s}".format('test1', 'test2')
"repr() shows quotes: 'test1'; str() doesn't: test2"
ログイン後にコピー

添え字経由

フォーマットする必要がある文字列:

>>> "{:>8}".format("181716")
' 181716'
>>> "{:0>8}".format("181716")
'00181716'
>>> "{:->8}".format("181716")
'--181716'
>>> "{:-<8}".format("181716")
'181716--'
>>> "{:-^8}".format("181716")
'-181716-'
>>> "{:-<25}>".format("Here ")
'Here -------------------->'
ログイン後にコピー

変換を指定します

文字列の変換タイプを指定できます:

>>> "[ {:.2f} ]".format(321.33345)
'[ 321.33 ]'
>>> "[ {:.1f} ]".format(321.33345)
'[ 321.3 ]'
>>> "[ {:.4f} ]".format(321.33345)
'[ 321.3335 ]'
>>> "[ {:.4f} ]".format(321)
'[ 321.0000 ]'
ログイン後にコピー

ここで、「!r」は repr() に対応します。 !s" は str() に対応し、"! a" は ascii() に対応します。 例:

>>> '{:+f}; {:+f}'.format(3.141592657, -3.141592657)
'+3.141593; -3.141593'
>>> '{: f}; {: f}'.format(3.141592657, -3.141592657)
' 3.141593; -3.141593'
>>> '{:f}; {:f}'.format(3.141592657, -3.141592657)
'3.141593; -3.141593'
>>> '{:-f}; {:-f}'.format(3.141592657, -3.141592657)
'3.141593; -3.141593'
>>> '{:+.4f}; {:+.4f}'.format(3.141592657, -3.141592657)
'+3.1416; -3.1416'
ログイン後にコピー

フォーマット修飾子

パディングと位置合わせ

パディングは、多くの場合、位置合わせと一緒に使用されます。 ^、<、> はそれぞれ中央揃え、左揃え、右揃えで、その後に width が続き、その後の文字は 1 文字だけで埋められます。指定しない場合は、デフォルトでスペースで埋められます。

&gt;&gt;&gt; &quot;int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}&quot;.format(18)
&#39;int: 18; hex: 12; oct: 22; bin: 10010&#39;
&gt;&gt;&gt; &quot;int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}&quot;.format(18)
&#39;int: 18; hex: 0x12; oct: 0o22; bin: 0b10010&#39;
ログイン後にコピー

浮動小数点精度

f を使用して浮動小数点型を表すと、その前に精度制御を追加できます:

&gt;&gt;&gt; &#39;{:,}&#39;.format(1234567890)
&#39;1,234,567,890&#39;
ログイン後にコピー

浮動小数点の符号を指定することもできます数値、+ は正の数値の前に表示され、- は負の数値の前に表示されます。(スペース) は、正の数値の前にスペースを追加し、負の数値の前に - を追加することを意味します ({:f}):

&gt;&gt;&gt; &quot;progress: {:.2%}&quot;.format(19.88/22)
&#39;progress: 90.36%&#39;
ログイン後にコピー

基数を指定します

type ::= &quot;b&quot; | &quot;c&quot; | &quot;d&quot; | &quot;e&quot; | &quot;E&quot; | &quot;f&quot; | &quot;F&quot; | &quot;g&quot; | &quot;G&quot; | &quot;n&quot; | &quot;o&quot; | &quot;s&quot; | &quot;x&quot; | &quot;X&quot; | &quot;%&quot;
ログイン後にコピー

千の位の区切り文字

千の位の区切り文字として「,」を使用できます:

&gt;&gt;&gt; &#39;{0:{fill}{align}16}&#39;.format(&quot;hello&quot;, fill=&#39;*&#39;, align=&#39;^&#39;)
&#39;*****hello******&#39;
&gt;&gt;&gt;
&gt;&gt;&gt; for num in range(5,12):
...  for base in &quot;dXob&quot;:
...   print(&quot;{0:{width}{base}}&quot;.format(num, base=base, width=5), end=&#39; &#39;)
...  print()
...  
...
 5  5  5 101
 6  6  6 110
 7  7  7 111
 8  8 10 1000
 9  9 11 1001
 10  A 12 1010
 11  B 13 1011
ログイン後にコピー

パーセント表示

&gt;&gt;&gt; email_f = &quot;Your email address was {email}&quot;.format
&gt;&gt;&gt; print(email_f(email=&quot;suodhuoty@gmail.com&quot;))
Your email address was sudohuoty@gmail.com
ログイン後にコピー

実際、形式はさらに多くの型シンボルもサポートしています:

&gt;&gt;&gt; &quot; The {} set is often represented as { {0} } &quot;.format(&quot;empty&quot;)
&#39; The empty set is often represented as {0} &#39;
ログイン後にコピー

🎜その他のテクニック🎜🎜🎜🎜🎜プレースホルダーのネスト🎜🎜🎜 場合によってはプレースホルダーのネストが依然として役立つことがあります:🎜 🎜 🎜りー🎜🎜🎜🎜中古関数として🎜🎜🎜最初に書式パラメータを指定することはできませんが、不要な場所で関数として呼び出します: 🎜🎜🎜rrreee🎜🎜🎜🎜中括弧をエスケープ🎜🎜🎜文字内の場合 中括弧を使用する必要がある場合文字列の場合は、中かっこを使用してエスケープできます: 🎜🎜🎜rrreee🎜🎜🎜 Python での文字列フォーマット str.format の詳細と関連記事については、PHP 中国語 Web サイトに注目してください。 🎜
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Pythonを使用してテキストファイルのZIPF配布を見つける方法 Pythonを使用してテキストファイルのZIPF配布を見つける方法 Mar 05, 2025 am 09:58 AM

Pythonを使用してテキストファイルのZIPF配布を見つける方法

Pythonでファイルをダウンロードする方法 Pythonでファイルをダウンロードする方法 Mar 01, 2025 am 10:03 AM

Pythonでファイルをダウンロードする方法

HTMLを解析するために美しいスープを使用するにはどうすればよいですか? HTMLを解析するために美しいスープを使用するにはどうすればよいですか? Mar 10, 2025 pm 06:54 PM

HTMLを解析するために美しいスープを使用するにはどうすればよいですか?

Pythonでの画像フィルタリング Pythonでの画像フィルタリング Mar 03, 2025 am 09:44 AM

Pythonでの画像フィルタリング

Pythonを使用してPDFドキュメントの操作方法 Pythonを使用してPDFドキュメントの操作方法 Mar 02, 2025 am 09:54 AM

Pythonを使用してPDFドキュメントの操作方法

DjangoアプリケーションでRedisを使用してキャッシュする方法 DjangoアプリケーションでRedisを使用してキャッシュする方法 Mar 02, 2025 am 10:10 AM

DjangoアプリケーションでRedisを使用してキャッシュする方法

Natural Language Toolkit(NLTK)の紹介 Natural Language Toolkit(NLTK)の紹介 Mar 01, 2025 am 10:05 AM

Natural Language Toolkit(NLTK)の紹介

TensorflowまたはPytorchで深い学習を実行する方法は? TensorflowまたはPytorchで深い学習を実行する方法は? Mar 10, 2025 pm 06:52 PM

TensorflowまたはPytorchで深い学習を実行する方法は?

See all articles