検索
ホームページバックエンド開発Python チュートリアルPython で文字列の書式設定を実装する方法のまとめ

Python2.6+ では、元の '%' 演算子を置き換える str.format 関数が追加されています。この使用方法は、「%」よりも直感的で柔軟です。詳しい使い方をご紹介します。

以下は '%' の使用例です:

""
"PI is %f..." % 3.14159 # => 'PI is 3.141590...'
"%d + %d = %d" % (5, 6, 5+6) # => '5 + 6 = 11'
"The usage of %(language)s" % {"language": "python"} # => 'The usage of python'

この形式は C 言語の printf によく似ていますね。 「%」は演算子であるため、パラメータは左右に1つしか配置できません。そのため、右側に複数の値を含める必要があり、タプルと辞書を併用することができず、柔軟性に欠けます。 。

同じ例を format メソッドを使用して書き換えます:

"PI is {0}...".format(3.14159) # => 'PI is 3.14159...'
"{0} + {1} = {2}".format(5, 6, 5+6) # => '5 + 6 = 11'
"The usage of {language}".format(language = "Python") # => 'The usage of Python'

とても直感的ではないでしょうか? (もちろん、C 言語を使用する場合は、前者の書式設定方法も気に入っています:-) )

文字列の書式設定

"{named} consist of intermingled character {0} and {1}".format("data", "markup", \
  named = "Formats trings")
format(10.0, "7.3g") # => '   10'
"My name is {0} :-{{}}".format('Fred') # => 'My name is Fred :-{}'

ステートメントを次のようにする必要がある場合は、最初の行の '' に注意してください。ラップされた場合は、末尾にバックスラッシュを付けてエスケープする必要があります。

「%」を使用すると、このようにタプルと辞書を混在させることはできません。実際、ここには Python の機能である名前付きパラメーターがあります。配列を定義するときに、*args、**kwargs 構文を使用してコレクションと辞書を拡張できます。名前付きパラメータが最後に配置されることに注意してください。

2 番目のステートメントは、format 組み込み関数を使用して単一の値をフォーマットすることを示します。

3 番目のステートメントは、{} のエスケープを表します。これは、{} が書式設定された文字列内の特殊文字であり、直接表示できないためです。エスケープ方法は、さらに 1 レベルをネストすることです。

プロパティとインデックスの使用

"My name is {0.name}".format(open('out.txt', 'w')) # => 'My name is out.txt'

'{0.name}'は、オブジェクトのプロパティ open('out.txt', 'w').name

"My name is {0[name]}".format(dict(name='Fred')) # => 'My name is Fred'

を呼び出すことと同じです

インデックスの使用も可能です。

obj[key] は obj.____getitem____('key') と同等です

標準指定子 (Specifiers)

C 言語を書いたことのあるプログラマは、printf の複雑さを知っておく必要があります。 format は、値の形式を解釈して文字列に挿入するために使用される多数の標準指定子も定義します。例:

"My name is {0:8}".format('Fred') # => 'My name is Fred  '

':' の後に指定子が続きます。上の例では、指定子には '8' (最小幅) が 1 つだけあります。これは、挿入された値の幅が少なくとも 8 であることを意味します。 。 「Fred」には 4 つしかないため、さらに 4 つのスペースが追加されます。

指定子の詳細な形式は次のとおりです:

[[fill]align][sign][#][0][minimumwidth][.precision][type] (C の printf よりも簡潔ではありません!)

注: '[]' は要素がオプションであることを意味します。したがって、すべての形式指定子はオプションです。前の例と同様に、これはほとんど使用されません (例をわかりやすくするためだけです)。実際、これらは非常に便利です。

一つずつ見てみましょう:
1. [fill]align は配置を意味します。 minimumwidth が挿入された値より大きく設定されている場合、前の例の「My name is Fred」のように空白が生じます。デフォルトでは、スペースは右側に配置されます。これは、挿入された値がデフォルトで左揃えになることを意味します。 {0:>8} を試してみると、結果は「My name is Fred」となることがわかります。
fill は、空白スペースを埋めるために使用される文字を表します。 Fill は、align が指定されている場合にのみ役立ちます。 align には次のロゴを指定できます:

  • > 右揃え

  • = 整列ロゴの後にスペースを入れます。これは数字にのみ有効です。それはどういう意味ですか?以下で説明するように、align は数値の正負の符号を表示しますが、これも数値に対してのみ有効です。 「=」を指定すると、空白の前に数値の正負の符号が表示されます。例: format(-12, "0=8") # => '-0000012' ここでは、単一の値をフォーマットする組み込み関数の形式が使用されていることに注意してください。 「0」は空白を埋めるために使用されるfill要素で、「=」はマークで、「8」は最小幅が8であるため、空白が5つしかないことを意味します。揃えるのはどうですか? align は実際にはプラス記号とマイナス記号の表示方法を記述します。これについては後で説明しますが、ここではデフォルトの '-' が使用されます。

  • ^ 中央揃え

2. デジタル記号を署名します。数値にのみ有効です。

  • + はプラス記号とマイナス記号を表示します

  • - はプラス記号を表示せず、マイナス記号を表示します。最小幅を指定しない場合、負の数値は常に正の数値より 1 つ多いシンボル位置を占めます。デフォルト

  • ' (スペース) プラス記号を空白スペースに置き換えます

3. # 表示される数値の接頭辞は 10 進数を表します (0b、0o、0x)

4 を使用します。 0の場合は0' 空白スペースを埋めてください。

5. minimumwidth は、何度も使用されている最小幅を指定します。

6. 精度 「精度」は、表示する小数点以下の桁数を示す 10 進数です。

7. 型値の型:

① 整数型:

  • b 2進数

  • c 文字型、数値をUnicodeを表す文字に変換

  • d 10進数

  • o 8進数

  • x 16進数、小文字表示

  • 、スペース不可) dと同じ

  • ②浮動小数点数

    • e 科学计数法表示,小写e

    • E 科学计数法表示,大写E

    • f 显示为定点数,默认小数点后六位

    • F 同f

    • g 自动选择是否用科学记数法表示

    • G 同g

    • n 同g,使用本地表示方式

    • % 使用百分比表示

    • ''(空) 同g

    每个对象可以重写自己的格式化说明符,例如datatime类重写了后可以这样表示:

    "Today is: {0:%a %b %d %H:%M:%S %Y}".format(datetime.now())

    预先转换

    ':'之后是格式说明符,之前还可以加预先转换的标识

    • !r 调用对象的_repr_方法来转换成标准字符串

    • !s 调用对象的_str_方法来转换成字符串

    重写_format_方法

    我们在格式化一个字符串时,首先格式化每个值,然后再插入字符串内。格式化值调用的就是format内置方法。format则是简单地调用该值的_format_方法。

    def format(value, format_spec):
      return value.__format__(format_spec)

    在object类内实现了_format方法,只是将本身用str()转换成字符串,然后将字符串传入内置的format方法,实际上就是调用转换为字符串后的format_方法。

    class object:
      def __format__(self, format_spec):
        return format(str(self), format_spec)

    int/float/str自身实现了_format_方法,前面已经介绍了它们各自的说明符。

    结束语

    还有一点儿是自定义Formatter,不过平常也用不到。留作下篇string模块源码解读的内容吧。建议有兴趣的朋友多看看Python标准库的源码,很有学习价值。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持PHP中文网。

    更多Python实现字符串格式化的方法小结相关文章请关注PHP中文网!

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は?LinuxターミナルでPythonバージョンを表示するときに発生する権限の問題を解決する方法は?Apr 01, 2025 pm 05:09 PM

LinuxターミナルでPythonバージョンを表示する際の許可の問題の解決策PythonターミナルでPythonバージョンを表示しようとするとき、Pythonを入力してください...

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

この記事では、Pythonライブラリである美しいスープを使用してHTMLを解析する方法について説明します。 find()、find_all()、select()、およびget_text()などの一般的な方法は、データ抽出、多様なHTML構造とエラーの処理、および代替案(SEL

Pythonの数学モジュール:統計Pythonの数学モジュール:統計Mar 09, 2025 am 11:40 AM

Pythonの統計モジュールは、強力なデータ統計分析機能を提供して、生物統計やビジネス分析などのデータの全体的な特性を迅速に理解できるようにします。データポイントを1つずつ見る代わりに、平均や分散などの統計を見て、無視される可能性のある元のデータの傾向と機能を発見し、大きなデータセットをより簡単かつ効果的に比較してください。 このチュートリアルでは、平均を計算し、データセットの分散の程度を測定する方法を説明します。特に明記しない限り、このモジュールのすべての関数は、単に平均を合計するのではなく、平均()関数の計算をサポートします。 浮動小数点数も使用できます。 ランダムをインポートします インポート統計 fractiから

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

この記事では、深い学習のためにTensorflowとPytorchを比較しています。 関連する手順、データの準備、モデルの構築、トレーニング、評価、展開について詳しく説明しています。 特に計算グラップに関して、フレームワーク間の重要な違い

あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は?あるデータフレームの列全体を、Python内の異なる構造を持つ別のデータフレームに効率的にコピーする方法は?Apr 01, 2025 pm 11:15 PM

PythonのPandasライブラリを使用する場合、異なる構造を持つ2つのデータフレーム間で列全体をコピーする方法は一般的な問題です。 2つのデータがあるとします...

Pythonでコマンドラインインターフェイス(CLI)を作成する方法は?Pythonでコマンドラインインターフェイス(CLI)を作成する方法は?Mar 10, 2025 pm 06:48 PM

この記事では、コマンドラインインターフェイス(CLI)の構築に関するPython開発者をガイドします。 Typer、Click、Argparseなどのライブラリを使用して、入力/出力の処理を強調し、CLIの使いやすさを改善するためのユーザーフレンドリーな設計パターンを促進することを詳述しています。

人気のあるPythonライブラリとその用途は何ですか?人気のあるPythonライブラリとその用途は何ですか?Mar 21, 2025 pm 06:46 PM

この記事では、numpy、pandas、matplotlib、scikit-learn、tensorflow、django、flask、and requestsなどの人気のあるPythonライブラリについて説明し、科学的コンピューティング、データ分析、視覚化、機械学習、Web開発、Hの使用について説明します。

Pythonの仮想環境の目的を説明してください。Pythonの仮想環境の目的を説明してください。Mar 19, 2025 pm 02:27 PM

この記事では、Pythonにおける仮想環境の役割について説明し、プロジェクトの依存関係の管理と競合の回避に焦点を当てています。プロジェクト管理の改善と依存関係の問題を減らすための作成、アクティベーション、およびメリットを詳しく説明しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。