美文网首页
Python字符串格式化

Python字符串格式化

作者: W无花果W | 来源:发表于2023-10-24 21:04 被阅读0次

    printf-style String Formatting

    字符串对象有一个独特的内置运算:%运算符,这也被称为字符串格式或插值运算符。

    它处理的类型范围较窄,使用起来稍微困难,但在可以处理的情况下通常更快。

    形式为:format%values,其中format是字符串。如果格式需要单个参数,则值可以是单个非元组对象。否则,值必须是与格式字符串指定的项数完全相同的元组,或者是单个映射对象(例如,字典)。

    转换说明符包含两个或多个字符,并具有以下组成部分,这些组成部分必须按以下顺序出现:

    1.“%”字符,它标记说明符的开始。

    2.映射键(可选),由带括号的字符序列组成(例如,(somename))。

    3.转换标志(可选),它会影响某些转换类型的结果。

    4.最小字段宽度(可选)。如果指定为“*”(星号),则从值中元组的下一个元素读取实际宽度,并且要转换的对象位于最小字段宽度和可选精度之后。

    5.精度(可选),以"."后面跟着精度。如果指定为“*”(星号),则从值中元组的下一个元素读取实际精度,并且要转换的值位于精度之后。

    6.长度修改器(可选)。

    7.转换类型

    如果正确的参数是字典(或其他映射类型),则字符串中的格式必须在紧接在“%”字符之后插入的字典中包含带括号的映射键。映射键从映射中选择要格式化的值。例如:

    >>> print('%(language)s has %(number)03d quote types.'%

    ... {'language':"Python","number":2})

    Python has 002 quote types.

    转换标志

    #:值转换将使用“替代形式”(定义如下)

    0:对于数值,转换将使用零填充。

    -:转换后的值将进行左调整(如果同时给定“0”转换,则覆盖“0”转换)。

    ‘ ’:(空格)有符号转换产生的正数(或空字符串)之前应留有空格。

    +:正负号(“+”或“-”)将位于转换之前(覆盖“空格”标志)。

    示例:

    >>> print("%s %s %s"%(1,2,300))

    1 2 300

    >>> print("%2.4f"%3.14159)

    3.1416

    >>> print("%0x" %100)

    64

    >>> print("%#0x" %100)

    0x64

    转换类型

    printf-style String Formatting转换类型

    Formatted string literals

    Formatted string literals或f-string是以“f”或“f”为前缀的字符串文字。这些字符串可能包含替换字段,这些字段是由大括号{}分隔的表达式。虽然其他字符串文字总是有一个常数值,但格式化字符串实际上是在运行时计算的表达式。

    单个左花括号“{”标记一个替换字段,该字段以Python表达式开头。若要在计算后显示表达式文本及其值,(在调试中很有用),可以在表达式后面添加等号“=”。转换字段由感叹号“!”引入(如果指定了转换,则表达式的求值结果将在格式化之前进行转换。转换'!s'对结果调用str(),'!r'调用repr(),和'!a’调用ascii())。还可以附加一个格式说明符,由冒号“:”引入。替换字段以大括号“}”结尾。当提供等号“=”时,输出将包含表达式文本、“=”和计算值。左大括号“{”之后、表达式内和“=”之后的空格都保留在输出中。默认情况下,除非指定了格式,否则“=”会导致提供表达式的repr()。指定格式时,除非声明了转换“!r”,否则默认为表达式的str()。

    最后结果使用format()协议进行格式化。格式说明符被传递给表达式或转换结果的__format__()方法。省略格式说明符时会传递一个空字符串。格式化后的结果将包含在整个字符串的最终值中。

    示例:

    Formatted string literals示例

    str.format(*args, **kwargs)

    执行字符串格式化操作。调用此方法的字符串可以包含由大括号{}分隔的文本或替换字段。每个替换字段都包含位置参数的数字索引或关键字参数的名称。返回字符串的副本,其中每个替换字段都替换为相应参数的字符串值。

    >>> "The sum of 1 + 2 is {0}".format(1+2)

    'The sum of 1 + 2 is 3'

    相关文章

      网友评论

          本文标题:Python字符串格式化

          本文链接:https://www.haomeiwen.com/subject/bywhidtx.html