建可收费的网站,番禺论坛网站建设,代码怎么生成网站,网站建设suteng无极低码 #xff1a;https://wheart.cn
字符串常量
此模块中定义的常量为#xff1a;
string.ascii_letters 下文所述 ascii_lowercase 和 ascii_uppercase 常量的拼连。 该值不依赖于语言区域。
string.ascii_lowercase 小写字母 abcdefghijklmnopqrstuvwxyz。 该值不依…无极低码 https://wheart.cn
字符串常量
此模块中定义的常量为
string.ascii_letters 下文所述 ascii_lowercase 和 ascii_uppercase 常量的拼连。 该值不依赖于语言区域。
string.ascii_lowercase 小写字母 abcdefghijklmnopqrstuvwxyz。 该值不依赖于语言区域不会发生改变。
string.ascii_uppercase 大写字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ。 该值不依赖于语言区域不会发生改变。
string.digits 字符串 0123456789。
string.hexdigits 字符串 0123456789abcdefABCDEF。
string.octdigits 字符串 01234567。
string.punctuation 由在 C 区域设置中被视为标点符号的 ASCII 字符所组成的字符串: !#$%()*,-./:;?[\]^_{|}~.
string.printable 由被视为可打印符号的 ASCII 字符组成的字符串。 这是 digits, ascii_letters, punctuation 和 whitespace 的总和。
string.whitespace 由被视为空白符号的 ASCII 字符组成的字符串。 其中包括空格、制表、换行、回车、进纸和纵向制表符。 自定义字符串格式化
内置的字符串类提供了通过使用 PEP 3101 所描述的 format() 方法进行复杂变量替换和值格式化的能力。 string 模块中的 Formatter 类允许你使用与内置 format() 方法相同的实现来创建并定制你自己的字符串格式化行为。
class string.Formatter Formatter 类包含下列公有方法
format(format_string, /, *args, **kwargs) 首要的 API 方法。 它接受一个格式字符串和任意一组位置和关键字参数。 它只是一个调用 vformat() 的包装器。 在 3.7 版本发生变更: 格式字符串参数现在是 仅限位置参数。
vformat(format_string, args, kwargs) 此函数执行实际的格式化操作。 它被公开为一个单独的函数用于需要传入一个预定义字母作为参数而不是使用 *args 和 **kwargs 语法将字典解包为多个单独参数并重打包的情况。 vformat() 完成将格式字符串分解为字符数据和替换字段的工作。 它会调用下文所述的几种不同方法。
此外Formatter 还定义了一些旨在被子类替换的方法
parse(format_string) 循环遍历 format_string 并返回一个由可迭代对象组成的元组 (literal_text, field_name, format_spec, conversion)。 它会被 vformat() 用来将字符串分解为文本字面值或替换字段。
元组中的值在概念上表示一段字面文本加上一个替换字段。 如果没有字面文本如果连续出现两个替换字段就会发生这种情况则 literal_text 将是一个长度为零的字符串。 如果没有替换字段则 field_name, format_spec 和 conversion 的值将为 None。
get_field(field_name, args, kwargs) 给定 field_name 作为 parse() (见上文) 的返回值将其转换为要格式化的对象。 返回一个元组 (obj, used_key)。 默认版本接受在 PEP 3101 所定义形式的字符串例如 0[name] 或 label.title。 args 和 kwargs 与传给 vformat() 的一样。 返回值 used_key 与 get_value() 的 key 形参具有相同的含义。
get_value(key, args, kwargs) 提取给定的字段值。 key 参数将为整数或字符串。 如果是整数它表示 args 中位置参数的索引如果是字符串它表示 kwargs 中的关键字参数名。
args 形参会被设为 vformat() 的位置参数列表而 kwargs 形参会被设为由关键字参数组成的字典。
对于复合字段名称仅会为字段名称的第一个组件调用这些函数后续组件会通过普通属性和索引操作来进行处理。
因此举例来说字段表达式 0.name 将导致调用 get_value() 时附带 key 参数值 0。 在 get_value() 通过调用内置的 getattr() 函数返回后将会查找 name 属性。
如果索引或关键字引用了一个不存在的项则将引发 IndexError 或 KeyError。
check_unused_args(used_args, args, kwargs) 在必要时实现对未使用参数进行检测。 此函数的参数是是格式字符串中实际引用的所有参数键的集合整数表示位置参数字符串表示名称参数以及被传给 vformat 的 args 和 kwargs 的引用。 未使用参数的集合可以根据这些形参计算出来。 如果检测失败则 check_unused_args() 应会引发一个异常。
format_field(value, format_spec) format_field() 会简单地调用内置全局函数 format()。 提供该方法是为了让子类能够重载它。
convert_field(value, conversion) 使用给定的转换类型来自 parse() 方法所返回的元组来转换由 get_field() 所返回的值。 默认版本支持 s (str), r (repr) 和 a (ascii) 等转换类型。 格式字符串语法
str.format() 方法和 Formatter 类共享相同的格式字符串语法虽然对于 Formatter 来说其子类可以定义它们自己的格式字符串语法。 具体语法与 格式化字符串字面值 相似但较为简单一些并且关键的一点是不支持任意表达式。
格式字符串包含有以花括号 {} 括起来的“替换字段”。 不在花括号之内的内容被视为字面文本会不加修改地复制到输出中。 如果你需要在字面文本中包含花括号字符可以通过重复来转义: {{ and }}。
替换字段的语法如下
replacement_field :: { [field_name] [! conversion] [: format_spec] }
field_name :: arg_name (. attribute_name | [ element_index ])*
arg_name :: [identifier | digit]
attribute_name :: identifier
element_index :: digit | index_string
index_string :: any source character except ]
conversion :: r | s | a
format_spec :: format-spec:format_spec用不太正式的术语来描述替换字段开头可以用一个 field_name 指定要对值进行格式化并取代替换字符被插入到输出结果的对象。 field_name 之后有可选的 conversion 字段它是一个感叹号 ! 加一个 format_spec并以一个冒号 : 打头。 这些指明了替换值的非默认格式。
另请参阅 格式规格迷你语言 一节。
field_name 本身以一个数字或关键字形式的 arg_name 打头。 如果为数字则它指向一个位置参数而如果为关键字则它指向一个命名关键字参数。 如果在字符串上调用 str.isdecimal() 会返回真值则 arg_name 会被当作数字来处理。 如果格式字段串中的数字 arg_names 为 0, 1, 2, ... 的序列它们可以全部而非部分被省略并且数字 0, 1, 2, ... 将按顺序被自动插入。 由于 arg_name 不使用引号分隔因此无法在格式字符串中指定任意的字典键例如字符串 10 或 :-] 等。 arg_name 之后可以跟任意数量的索引或属性表达式。 .name 形式的表达式会使用 getattr() 来选择命名属性而 [index] 形式的表达式会使用 __getitem__() 来执行索引查找。 在 3.1 版本发生变更: 位置参数说明符对于 str.format() 可以省略因此 {} {}.format(a, b) 等价于 {0} {1}.format(a, b)。 在 3.4 版本发生变更: 位置参数说明符对于 Formatter 可以省略。
一些简单的格式字符串示例 First, thou shalt count to {0} # References first positional argument
Bring me a {} # Implicitly references the first positional argument
From {} to {} # Same as From {0} to {1}
My quest is {name} # References keyword argument name
Weight in tons {0.weight} # weight attribute of first positional arg
Units destroyed: {players[0]} # First element of keyword argument players.conversion 字段会在格式化之前进行类型强制转换。 通常格式化一个值的工作是由该值本身的 __format__() 方法完成的。 但是在某些情况下最好是强制将类型格式化为一个字符串覆盖其本身的格式化定义。 通过在调用 __format__() 之间将值转换为字符串可以绕过正常的格式化逻辑。
目前支持的转换旗标有三种: !s 会对值调用 str()!r 调用 repr() 而 !a 则调用 ascii()。
示例如下 Harolds a clever {0!s} # Calls str() on the argument first
Bring out the holy {name!r} # Calls repr() on the argument first
More {!a} # Calls ascii() on the argument firstformat_spec 字段包含值应如何呈现的规格描述例如字段宽度、对齐、填充、小数精度等细节信息。 每种值类型可以定义自己的“格式化迷你语言”或对 format_spec 的解读方式。
大多数内置类型都支持同样的格式化迷你语言具体描述见下一节。
format_spec 字段还可以在其内部包含嵌套的替换字段。 这些嵌套的替换字段可能包括字段名称、转换旗标和格式规格描述但是不再允许更深层的嵌套。 format_spec 内部的替换字段会在解读 format_spec 字符串之前先被解读。 这将允许动态地指定特定值的格式。
请参阅 格式示例 一节查看相关示例。 格式规格迷你语言
“格式规格”在格式字符串所包含的替换字段内部使用用于定义单个值应如何呈现 (参见 格式字符串语法 和 f 字符串)。 它们也可以被直接传给内置的 format() 函数。 每种可格式化的类型都可以自行定义如何对格式规格进行解读。
大多数内置类型都为格式规格实现了下列选项不过某些格式化选项只被数值类型所支持。
一般约定空的格式描述将产生与在值上调用 str() 相同的结果。 非空格式描述通常会修改此结果。
标准格式说明符 的一般形式如下
format_spec :: [[fill]align][sign][z][#][0][width][grouping_option][. precision][type]
fill :: any character
align :: | | | ^
sign :: | - |
width :: digit
grouping_option :: _ | ,
precision :: digit
type :: b | c | d | e | E | f | F | g | G | n | o | s | x | X | %如果指定了一个有效的 align 值则可以在该值前面加一个 fill 字符它可以为任意字符如果省略则默认为空格符。 在 格式化字符串字面值 或在使用 str.format() 方法时是无法使用花括号字面值 ({ or }) 作为 fill 字符的。 但是通过嵌套替换字段插入花括号则是可以的。 这个限制不会影响 format() 函数。
各种对齐选项的含义如下 选项含意强制字段在可用空间内左对齐这是大多数对象的默认值。强制字段在可用空间内右对齐这是数字的默认值。强制在符号如果有之后数码之前放置填充。 这被用于以 000000120 形式打印字段。 这个对齐选项仅对数字类型有效。 这是当 0 紧接在字段宽度之前时的默认选项。^强制字段在可用空间内居中。
请注意除非定义了最小字段宽度否则字段宽度将始终与填充它的数据大小相同因此在这种情况下对齐选项没有意义。
sign 选项仅对数字类型有效可以是以下之一 选项含意表示标志应该用于正数和负数。-表示标志应仅用于负数这是默认行为。space表示应在正数上使用前导空格在负数上使用减号。
The z option coerces negative zero floating-point values to positive zero after rounding to the format precision. This option is only valid for floating-point presentation types. 在 3.11 版本发生变更: 增加了 z 选项 (另请参阅 PEP 682)。
# 选项可让“替代形式”被用于执行转换。 替代形式会针对不同的类型分别定义。 此选项仅适用于整数、浮点数和复数类型。 对于整数类型当使用二进制、八进制或十六进制输出时此选项会为输出值分别添加相应的 0b, 0o, 0x 或 0X 前缀。 对于浮点数和复数类型替代形式会使得转换结果总是包含小数点符号即使其不带小数部分。 通常只有在带有小数部分的情况下此类转换的结果中才会出现小数点符号。 此外对于 g 和 G 转换末尾的零不会从结果中被移除。
, 选项表示使用逗号作为千位分隔符。 对于感应区域设置的分隔符请改用 n 整数表示类型。 在 3.1 版本发生变更: 添加了 , 选项 (另请参阅 PEP 378)。
_ 选项表示对浮点表示类型和整数表示类型 d 使用下划线作为千位分隔符。 对于整数表示类型 b, o, x 和 X将为每 4 个数位插入一个下划线。 对于其他表示类型指定此选项则将导致错误。 在 3.6 版本发生变更: 添加了 _ 选项 (另请参阅 PEP 515)。
width 是一个定义最小总字段宽度的十进制整数包括任何前缀、分隔符和其他格式化字符。 如果未指定则字段宽度将由内容确定。
当未显式给出对齐方式时在 width 字段前加一个零 (0) 字段将为数字类型启用感知正负号的零填充。 这相当于设置 fill 字符为 0 且 alignment 类型为 。 在 3.10 版本发生变更: 在 width 字段之前添加 0 不会再影响字符串的默认对齐。
precision 是一个十进制整数它表示对于以表示类型 f 和 F 格式化的数值应当在小数点后显示多少个数位或者对于以表示类型 g 或 G 格式化的数值应当在小数点前后显示多少个数位。 对于字符串表示类型该字段表示最大的字段大小 ——换句话说就是要使用多少个来自字段内容的字符。不允许对整数表示类型指定 precision 字段。
最后type 确定了数据应如何呈现。
可用的字符串表示类型是
类型含意s字符串格式。这是字符串的默认类型可以省略。None和 s 一样。 可用的整数表示类型是
类型含意b二进制格式。 输出以 2 为基数的数字。c字符。在打印之前将整数转换为相应的unicode字符。d十进制整数。 输出以 10 为基数的数字。o八进制格式。 输出以 8 为基数的数字。x十六进制格式。 输出以 16 为基数的数字使用小写字母表示 9 以上的数码。X十六进制格式。 输出以 16 为基数的数字使用大写字母表示 9 以上的数码。 在指定 # 的情况下前缀 0x 也将被转为大写形式 0X。n数字。 这与 d 相似不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。None和 d 相同。 在上述的表示类型之外整数还可以通过下列的浮点表示类型来格式化 (除了 n 和 None)。 当这样做时会在格式化之前使用 float() 将整数转换为浮点数。
float 和 Decimal 值的可用表示类型有:
类型含意e科学计数法。 对于一个给定的精度 p将数字格式化为以字母 e 分隔系数和指数的科学计数法形式。 系数在小数点之前有一位之后有 p 位总计 p 1 个有效数位。 如未指定精度则会对 float 采用小数点之后 6 位精度而对 Decimal 则显示所有系数位。 如果小数点之后没有数位则小数点也会被略去除非使用了 # 选项。E科学计数法。 与 e 相似不同之处在于它使用大写字母 E 作为分隔字符。f定点表示法。 对于一个给定的精度 p将数字格式化为在小数点之后恰好有 p 位的小数形式。 如未指定精度则会对 float 采用小数点之后 6 位精度而对 Decimal 则使用大到足够显示所有系数位的精度。 如果小数点之后没有数位则小数点也会被略去除非使用了 # 选项。F定点表示。 与 f 相似但会将 nan 转为 NAN 并将 inf 转为 INF。g常规格式。 对于给定精度 p 1这会将数值舍入到 p 个有效数位再将结果以定点表示法或科学计数法进行格式化具体取决于其值的大小。 精度 0 会被视为等价于精度 1。准确的规则如下假设使用表示类型 e 和精度 p-1 进行格式化的结果具有指数值 exp。 那么如果 m exp p其中 m 以 -4 表示浮点值而以 -6 表示 Decimal 值该数字将使用类型 f 和精度 p-1-exp 进行格式化。 否则的话该数字将使用表示类型 e 和精度 p-1 进行格式化。 在两种情况下都会从有效数字中移除无意义的末尾零如果小数点之后没有余下数字则小数点也会被移除除非使用了 # 选项。如未指定精度会对 float 采用 6 个有效数位的精度。 对于 Decimal结果的系数会沿用原值的系数数位对于绝对值小于 1e-6 的值以及最小有效数位的位值大于 1 的数值将会使用科学计数法在其他情况下则会使用定点表示法。正负无穷正负零和 nan 会分别被格式化为 inf, -inf, 0, -0 和 nan无论精度如何设定。G常规格式。 类似于 g不同之处在于当数值非常大时会切换为 E。 无穷与 NaN 也会表示为大写形式。n数字。 这与 g 相似不同之处在于它会使用当前区域设置来插入适当的数字分隔字符。%百分比。 将数字乘以 100 并显示为定点 (f) 格式后面带一个百分号。None对于 float 来说这类似于 g不同之处在于当使用定点表示法时小数点之后将至少显示一位。 所用的精度会大到足以精确表示给定的值。对于 Decimal 来说这相当于 g 或 G具体取决于当前 decimal 上下文的 context.capitals 值。总体效果是将 str() 的输出匹配为其他格式化因子所调整出的样子。