Python文字列フォーマットの位置引数:str.formatとf-string

ジョナスアドラー

新しい(そして素晴らしい)python 3リテラル文字列補間いくつかの機能を試してみると、この奇妙な違いが見つかりました。

たとえば、古いを使用するstr.formatと、次のように動的な桁数で整数をフォーマットできます。

>>> d = 5
>>> N = 3
>>> '{:0{N}d}'.format(d, N=N)
'005' 

しかし、リテラル文字列を使用して同等のものを試してみると、エラーが発生します。

>>> f'{:0{N}d}'
SyntaxError: f-string: empty expression not allowed

引数の順序を入れ替えるだけで、正しいフォーマットが得られます

>>> f'{d:0{N}}'
'005'

文字列を変更せずにf文字列にスワップできると思っていたので、これは奇妙なことに思いました。呼び出しだけです。

str.formatとf-stringの構文上の違いは何ですか?そして、なぜこの例はわずかに異なるのですか?

user2357112はモニカをサポートしています

あなたは何をするのか誤解'{:0{N}d}'.format(d, N=N)しました。dフォーマットの仕様では、変数を参照していませんdこれは、基数10の整数を出力することを意味します。Pythonは、そのフィールドをd引数と位置的に一致させます。

f-stringでそれを試してみるとf'{:0{N}d}'、、 f-stringsには位置引数がありません。Pythonは、そのフィールドのフォーマットを認識していません。元のバグを修正dして前に配置し:、Pythonがdそこでフォーマットすることになっていることを認識できるようにする必要があります。

参考のために、との正しいバージョンがformatあったであろう'{d:0{N}}'.format(d=d, N=N)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Pythonでの文字列と名前付き引数のフォーマット

分類Dev

String.format()と文字列連結のパフォーマンス

分類Dev

String.Formatのフォーマット文字列に変数を使用する場合、\ n

分類Dev

文字列フォーマット:%vs. .format vs. string literal

分類Dev

String.formatなどの正しいフォーマット文字列

分類Dev

[string] :: Formatと-f、および配列と分割演算子の違い

分類Dev

Python文字列フォーマット-古い `%`と新しい `str.format`

分類Dev

LineBreak(\ n)を、固定文字列をフォーマットとしてString.formatに追加する方法は?

分類Dev

Java / Groovy String.Formatフォーマットする文字列のランタイム%の処理方法

分類Dev

java String.formatのフォーマット文字のエスケープ

分類Dev

Swiftフォーマットを使用した文字列関数String(format:...)に相当するものはありますか?

分類Dev

f-stringは、ネストされたフォーマットのformatメソッドとは異なる動作をします

分類Dev

String.Format配列をフォーマットします

分類Dev

String.Format-フォーマット文字列からメタデータをクエリします

分類Dev

Python "{}"。formatのようなC ++文字列フォーマット

分類Dev

String.formatを使用したSSNのフォーマット

分類Dev

string.formatのシステムフォーマット例外

分類Dev

goog.string.formatを使用したClojureScriptフォーマット文字列は置換されません

分類Dev

bool と list を使用したフォーマット文字列の引数が不足しています

分類Dev

それはString.Formatのに渡すべきではありませんので、フォーマット文字列XXXは有効なフォーマット文字列ではありません

分類Dev

String.FormatのとStringBuilderの間のパフォーマンス

分類Dev

Python string.format():nansを「テキスト」としてフォーマットしますか?

分類Dev

string.Formatを多くの引数(stringまたはStringBuilder)で使用すると、パフォーマンスが向上しますか?

分類Dev

TypeError:MySQLとPythonを使用した文字列フォーマット中にすべての引数が変換されるわけではありません

分類Dev

String.formatと配列

分類Dev

jQueryのString.formatと同等

分類Dev

C#で引数として文字列のリストを使用して文字列をフォーマットします

分類Dev

新しいString()とリテラル文字列のパフォーマンス

分類Dev

String.formatでフォーマット文字列をプリコンパイルできますか?(または、ログのフォーマットを速くするために他に何かしますか?)

Related 関連記事

  1. 1

    Pythonでの文字列と名前付き引数のフォーマット

  2. 2

    String.format()と文字列連結のパフォーマンス

  3. 3

    String.Formatのフォーマット文字列に変数を使用する場合、\ n

  4. 4

    文字列フォーマット:%vs. .format vs. string literal

  5. 5

    String.formatなどの正しいフォーマット文字列

  6. 6

    [string] :: Formatと-f、および配列と分割演算子の違い

  7. 7

    Python文字列フォーマット-古い `%`と新しい `str.format`

  8. 8

    LineBreak(\ n)を、固定文字列をフォーマットとしてString.formatに追加する方法は?

  9. 9

    Java / Groovy String.Formatフォーマットする文字列のランタイム%の処理方法

  10. 10

    java String.formatのフォーマット文字のエスケープ

  11. 11

    Swiftフォーマットを使用した文字列関数String(format:...)に相当するものはありますか?

  12. 12

    f-stringは、ネストされたフォーマットのformatメソッドとは異なる動作をします

  13. 13

    String.Format配列をフォーマットします

  14. 14

    String.Format-フォーマット文字列からメタデータをクエリします

  15. 15

    Python "{}"。formatのようなC ++文字列フォーマット

  16. 16

    String.formatを使用したSSNのフォーマット

  17. 17

    string.formatのシステムフォーマット例外

  18. 18

    goog.string.formatを使用したClojureScriptフォーマット文字列は置換されません

  19. 19

    bool と list を使用したフォーマット文字列の引数が不足しています

  20. 20

    それはString.Formatのに渡すべきではありませんので、フォーマット文字列XXXは有効なフォーマット文字列ではありません

  21. 21

    String.FormatのとStringBuilderの間のパフォーマンス

  22. 22

    Python string.format():nansを「テキスト」としてフォーマットしますか?

  23. 23

    string.Formatを多くの引数(stringまたはStringBuilder)で使用すると、パフォーマンスが向上しますか?

  24. 24

    TypeError:MySQLとPythonを使用した文字列フォーマット中にすべての引数が変換されるわけではありません

  25. 25

    String.formatと配列

  26. 26

    jQueryのString.formatと同等

  27. 27

    C#で引数として文字列のリストを使用して文字列をフォーマットします

  28. 28

    新しいString()とリテラル文字列のパフォーマンス

  29. 29

    String.formatでフォーマット文字列をプリコンパイルできますか?(または、ログのフォーマットを速くするために他に何かしますか?)

ホットタグ

アーカイブ