Introdução à programação Python (018) - Explicação detalhada do uso da função format()
Índice
- Introdução à programação Python (018) - Explicação detalhada do uso da função format()
1. Formato básico da função format()
A função format() pode formatar dados e converter valores em uma representação [formatada] controlada por format_spec. A sintaxe da função format() é a seguinte:
format(value, format_spec)
ilustrar:
(1) valor: os dados a serem convertidos.
(2) format_spec: explicação do formato, depende do tipo de parâmetro de valor;
(3) Por padrão, format_spec é uma string vazia, que geralmente tem o mesmo efeito que chamar a função str(value).
(4) O formato do parâmetro format_spec inclui aplicações como valores de preenchimento, alinhamento de texto, configurações de sinalizadores, formatação, conversão de tipo e milhares de caracteres. O formato é o seguinte:
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"
2. O parâmetro format_spec não é fornecido
Se o parâmetro format_spec não for fornecido, outros dados de formato serão convertidos para o tipo string por padrão, o que tem o mesmo efeito que chamar a função str(value).
Por exemplo:
print("圆周率:" + format(3.14)) # 将浮点数转换为字符串
print("圆周率:" + str(3.14))
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
圆周率:3.14
圆周率:3.14
3. Defina o alinhamento da string (align)
Use as seguintes opções para definir o alinhamento das strings:
símbolo | significado |
---|---|
'<' | Força os campos a permanecerem alinhados à esquerda dentro do espaço válido (este é o padrão para a maioria dos objetos) |
'>' | Força os campos a permanecerem alinhados à direita dentro do espaço válido (este é o padrão para a maioria dos objetos) |
'=' | Força os caracteres de preenchimento a serem colocados após o símbolo (se houver) e antes do número, por exemplo: +000000120. Esta opção de alinhamento só é válida para tipos numéricos. Quando [0] precede imediatamente a largura do caractere, ele se torna o valor padrão ao preencher números. |
'^' | Forçar os campos a permanecerem centralizados no espaço disponível |
Por exemplo:
print("圆周率:" + format(3.14,"10.2f") + "|end") # 默认为右对齐
print("圆周率:" + format(3.14,">10.2f") + "|end") # 设置为右对齐
print("圆周率:" + format(3.14,"<10.2f") + "|end") # 设置为左对齐
print("圆周率:" + format(3.14,"^10.2f") + "|end") # 设置为居中对齐
print("圆周率:" + format(3.14,"A>10.2f") + "|end") # 设置为右对齐,前面填充A
print("圆周率:" + format(-3.14,"A>10.2f") + "|end") # 设置为右对齐,前面填充A(A位于-符号之前)
print("圆周率:" + format(-3.14,"A=10.2f") + "|end") # 数字前面填充A(A位于-符号之后)
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
圆周率: 3.14|end
圆周率: 3.14|end
圆周率:3.14 |end
圆周率: 3.14 |end
圆周率:AAAAAA3.14|end
圆周率:AAAAA-3.14|end
圆周率:-AAAAA3.14|end
4. Defina opções de sinalização
A opção de sinal só é válida para tipos numéricos. O significado da opção de sinal é o seguinte:
símbolo | significado |
---|---|
'+' | Os símbolos podem ser usados para representar números positivos e negativos. |
'-' | O sinal indicador é usado apenas para números negativos (este é o comportamento padrão) |
' ' | Espaços iniciais devem ser usados para números positivos e um sinal de menos para números negativos. |
Por exemplo:
print("圆周率:" + format(3.14,"+") + "|end") # 正数前面加+号
print("圆周率:" + format(-3.14,"+") + "|end") # 负数前面加-号
print("圆周率:" + format(3.14,"-") + "|end") # 正数前面不加+号
print("圆周率:" + format(-3.14,"-") + "|end") # 负数前面加+号
print("圆周率:" + format(3.14," ") + "|end") # 正数前面加空格
print("圆周率:" + format(-3.14," ") + "|end") # 负数前面加-号
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
圆周率:+3.14|end
圆周率:-3.14|end
圆周率:3.14|end
圆周率:-3.14|end
圆周率: 3.14|end
圆周率:-3.14|end
4. Defina # opções
# As opções são válidas apenas para tipos inteiros, ponto flutuante e números negativos. Os significados das # opções são os seguintes:
símbolo | significado |
---|---|
# | # As opções são válidas apenas para tipos inteiros, ponto flutuante e números negativos. Para números inteiros, ao usar saída binária, octal ou hexadecimal, esta opção adiciona o prefixo apropriado ao valor de saída: 0b, 0o, 0x ou 0X. Para números de ponto flutuante e negativos, a forma de substituição faz com que o resultado da conversão sempre contenha um caractere de ponto decimal, mesmo que não haja nenhum dígito depois dele. Para conversão de g e G em notação científica, os zeros à direita não são removidos do resultado. |
Por exemplo:
print("以下为整型数据的输出:")
print(format(11) + "|end") # 输出结果为十进制
print(format(11,"#") + "|end") # 输出结果为十进制
print(format(11,"b") + "|end") # 输出结果为二进制
print(format(11,"#b") + "|end") # 输出结果为二进制(输入0b)
print(format(11,"o") + "|end") # 输出结果为八进制
print(format(11,"#o") + "|end") # 输出结果为八进制(输入0o)
print(format(11,"x") + "|end") # 输出结果为十六进制
print(format(11,"#x") + "|end") # 输出结果为十六进制(输入0x)
print(format(11,"X") + "|end") # 输出结果为十六进制
print(format(11,"#X") + "|end") # 输出结果为十六进制(输入0X)
print("以下为浮点型数据的输出:")
print(format(11.8,"10.0f") + "|end") # 无小数点
print(format(11.8,"#10.0f") + "|end") # 有小数点
print(format(-11.8,"#10.0F") + "|end")
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
以下为整型数据的输出:
11|end
11|end
1011|end
0b1011|end
13|end
0o13|end
b|end
0xb|end
B|end
0XB|end
以下为浮点型数据的输出:
12|end
12.|end
-12.|end
5. Defina a opção grouping_option
O significado da opção grouping_option é o seguinte:
símbolo | significado |
---|---|
, | Indica o uso de vírgula como separador de milhares. |
_ | Use sublinhado como separador de milhares para tipos de ponto flutuante e inteiro. Para inteiros b, o, x e x, insira um sublinhado a cada 4 bits. |
Por exemplo:
print(format(12345678) + "|end") # 不使用千位分隔符
print(format(12345678,",") + "|end") # 使用逗号作为千位分隔符
print(format(12345678.2541,",") + "|end") # 使用逗号作为千位分隔符
print(format(12345678.2541,"_") + "|end") # 使用下划线作为千位分隔符
print(format(12345678,"_b") + "|end") # 使用逗号作为千位分隔符
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
12345678|end
12,345,678|end
12,345,678.2541|end
12_345_678.2541|end
1011_1100_0110_0001_0100_1110|end
6. Defina [0] e opções de largura
As opções [0] e largura têm os seguintes significados:
símbolo | significado |
---|---|
[0] largura |
largura: define a largura total do campo, incluindo quaisquer prefixos, separadores e outros caracteres de formatação. Se não for especificado, a largura do campo será determinada pelo conteúdo de saída. Se o alinhamento não for especificado, um zero (0) será anexado ao campo de largura, que é equivalente ao caractere de preenchimento 0 com sinal de tipo de alinhamento =. |
Por exemplo:
print(format(3.14) + "|end") # 不指定宽度
print(format(3.14,"10") + "|end") # 指定宽度为10,默认右对齐
print(format(3.14,"<10") + "|end") # 指定宽度为10,设置左对齐
print(format(3.14,"010") + "|end") # 指定宽度为10,左边用0填充
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
3.14|end
3.14|end
3.14 |end
0000003.14|end
7. Defina a opção [.precisão]
As opções [.precision] têm os seguintes significados:
símbolo | significado |
---|---|
[.precisão] | Define a precisão dos números de ponto flutuante, que é um número inteiro decimal. Indica quantos dígitos devem ser exibidos após o ponto decimal do tipo de ponto flutuante f. Indica quantos dígitos devem ser exibidos antes e depois da vírgula da notação científica decimal tipo g. |
Por exemplo:
print(format(3.1415926) + "|end") # 不指定宽度
print(format(3.1415926,"10.1f") + "|end") # 指定宽度为10,小数位数1
print(format(3.1415926,"10.2f") + "|end") # 指定宽度为10,小数位数2
print(format(3.1415926,".1f") + "|end") # 不指定宽度,小数位数1
print(format(3.1415926,".2f") + "|end") # 不指定宽度,小数位数2
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
3.1415926|end
3.1|end
3.14|end
3.1|end
3.14|end
8. Defina a opção de tipo
A opção type possui o seguinte formato para diferentes tipos de dados:
1. Tipo de string
As opções de tipo e seus significados são os seguintes:
símbolo | significado |
---|---|
é | Formato de string. |
Nenhum | O mesmo que S. |
Por exemplo:
print(format("Chinese","0<10") + "|end") # 左对齐,右侧用0填充
print(format("Chinese","0>10") + "|end") # 右对齐,左侧用0填充
print(format("Chinese","0^10") + "|end") # 居中对齐,左右两侧用0填充
print(format("Chinese","<10.3") + "|end") # 左对齐,截取左端3个字符
print(format("Chinese",">10.3") + "|end") # 右对齐,截取左端3个字符
print(format("Chinese","^10.3") + "|end") # 居中对齐,截取左端3个字符
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
Chinese000|end
000Chinese|end
0Chinese00|end
Chi |end
Chi|end
Chi |end
2. Tipo inteiro
As opções de tipo e seus significados são os seguintes:
símbolo | significado |
---|---|
b | formato binário |
c | Converta caracteres em números inteiros em caracteres Unicode correspondentes antes de imprimir |
d | inteiro decimal |
ó | Formato octal |
x | Formato hexadecimal, usando letras minúsculas para representar números acima de 9 |
X | Formato hexadecimal, usando letras maiúsculas para representar números acima de 9 |
n | 与 d 相似,不同之处在于它会使用当前区域设置来插入适当的数字分隔字符 |
例如:
print(format(1234567,"b") + "|end") # 二进制
print(format(1234567,"o") + "|end") # 八进制
print(format(1234567,"d") + "|end") # 十进制
print(format(1234567,"n") + "|end") # 十进制
print(format(1234567,"x") + "|end") # 十六进制
print(format(1234567,"X") + "|end") # 十六进制
print(format(4567,"c") + "|end") # 打印Unicode字符
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
100101101011010000111|end
4553207|end
1234567|end
1234567|end
12d687|end
12D687|end
ᇗ|end
3、浮点型
type 选项及含义如下:
符号 | 含义 |
---|---|
e | 科学计数法。 对于一个给定的精度 p,将数字格式化为以字母 e 分隔系数和指数的科学计数法形式。 系数在小数点之前有一位,之后有 p 位,总计 p + 1 个有效数位。 如未指定精度,则会对 float 采用小数点之后 6 位精度,而对 Decimal 则显示所有系数位。 如果小数点之后没有数位,则小数点也会被略去,除非使用了 # 选项。 |
E | 科学计数法。 与 e 相似,不同之处在于它使用大写字母 E 作为分隔字符。 |
f | 定点表示法。 对于一个给定的精度 p ,将数字格式化为在小数点之后恰好有 p 位的小数形式。 如未指定精度,则会对 float 采用小数点之后 6 位精度,而对 Decimal 则使用大到足够显示所有系数位的精度。如果小数点之后没有数位,则小数点也会被略去,除非使用了 # 选项。 |
g | (1)常规格式。 对于给定精度 p >= 1,这会将数值舍入到 p 个有效数位,再将结果以定点表示法或科学计数法进行格式化,具体取决于其值的大小。 精度 0 会被视为等价于精度1。 (2)如未指定精度,会对 float 采用 6 个有效数位的精度。 对于 Decimal,结果的系数会沿用原值的系数数位;对于绝对值小于 1e-6 的值以及最小有效数位的位值大于 1 的数值将会使用科学计数法,在其他情况下则会使用定点表示法即科学计数法。 |
% | 百分比。 将数字乘以 100 并显示为定点(f)格式,后面带一个百分号。 |
例如:
print("以下为科学计数法表示:")
print(format(1234567.123,"e") + "|end") # 6位小数
print(format(1234567.123,"15.10e") + "|end")# 10位小数
print(format(1234567.123,"15.10E") + "|end")# 10位小数,字母E大写
print(format(1234567.123,"15.0e") + "|end") # 0位小数
print(format(1234567.123,"#15.0e") + "|end")# 0位小数
print("以下为定点数表示:")
print(format(1234567.123,"#15.10f") + "|end")# 10位小数
print(format(1234567.123,"15.0f") + "|end") # 0位小数
print(format(1234567.123,"#15.0f") + "|end") # 0位小数
print(format(0.123,".2%") + "|end") # 百分比
运算结果为:
===================== RESTART: C:\Python\Python38\First.py =====================
以下为科学计数法表示:
1.234567e+06|end
1.2345671230e+06|end
1.2345671230E+06|end
1e+06|end
1.e+06|end
以下为定点数表示:
1234567.1229999999|end
1234567|end
1234567.|end
12.30%|end