Explicación detallada del formato de cadena de f'', str.format() y str%() en Python (2) ------ el uso de marcadores de posición de formato, el uso de formatos de fecha y hora

Contenidos
4. Uso de marcadores de posición de formato en expresiones de formato f'', str.format() y str%() (
1) Realice la conversión de base (o formato) y dos puntos:
(2) Realice el carácter del objeto Forma de cadena conversión con signo de exclamación!
(3) Especificar el ancho o precisión
para el objeto (4) Tomar el porcentaje del objeto
(5) Agregar un signo positivo + o un signo negativo - al objeto
(6) Agregar banderas (flags) al objeto
Cinco, f '', str.format() Formatos de fecha y hora usados ​​con expresiones de formato str%()

4. Uso de marcadores de posición de formato en expresiones de formato de f'' , str.format() y str%()

       Usamos str%() para dar formato a la expresión anteriormente, y el marcador de posición agregará el símbolo %, lo que indica que la posición genera datos en un formato determinado. Para f'' y str.format(), cuando se usa el marcador de posición en el formato expresión, utilice ¿Qué son otros símbolos, como: dos puntos:, signo de exclamación! . f'', las expresiones de formato str.format() usan marcadores de posición en la mayoría de los casos, es necesario agregar dos puntos: (generalmente significa usar marcadores de posición), al igual que las expresiones de formato str%(), los marcadores de posición se incrementarán como el signo % . Lo siguiente se enfoca en el uso de marcadores de posición f'', str.format() y el uso de expresiones de formato str%(). El formato de cadena f'' a menudo se conoce como formato de cadena f-string.

(1) Realice la conversión de base ( o formato ) y dos puntos :

       Cuando se usan marcadores de posición de formato en expresiones de formato f'', str.format(), generalmente se agregan dos puntos:. Entre ellos, use :b, :o, :x para convertir decimal a binario, octal y hexadecimal. Tomando octal como ejemplo aquí, las siguientes son las conversiones hexadecimales de las expresiones de formato de str%(), f'' y str.format().

print(f'十进制转换为八进制:{23:o},{25:o}')
print('十进制转换为八进制:{:o},{:o}'.format(23,25))
print('十进制转换为八进制:{1:o},{0:o}'.format(23,25))
print('十进制转换为八进制:%o,%o'%(23,25))

resultado de la operación:

        La siguiente es la conversión entre entero y coma flotante. En Python, el tipo de punto flotante tiene por defecto 7 decimales y, si es insuficiente, se rellena con 0 por defecto.

ne1=12.73
ne2=15
#对于f'',ne1为十进制浮点型时,不支持占位符d,ne2为整型的十进制整数d,支持占位符f。
print(f'{ne1:f},{ne2:d}')
print(f'{ne1:f},{ne2:f}')

print('\n')
#对于str.format(),ne1为十进制浮点型时,不支持占位符d,ne2为整型的十进制整数d,支持占位符f。
print('{:f},{:d}'.format(ne1,ne2))
print('{:f},{:f}'.format(ne1,ne2))
print('{1:f},{0:f}'.format(ne1,ne2))

print('\n')
#对于str%()支持,支持占位符d与f之间的转换。
print('%f,%d'%(ne1,ne2))
print('%d,%f'%(ne1,ne2))

resultado de la operación:

       Tenga en cuenta que para f'' y str.format(), el marcador de posición de la expresión de formato puede ser predeterminado. Por supuesto, los dos puntos relacionados con el marcador de posición: no pueden ser predeterminados. Significa usar un marcador de posición. En este momento De acuerdo con el marcador de posición predeterminado, pero el marcador de posición en str%() no puede ser predeterminado.

ne1=12.73
ne2=15
sr1='abcde'



#占位符可以缺省,缺省时按默认的占位符。
print(f'{ne1:},{ne2:},{sr1:}')

print('\n')
print('{:},{:},{:}'.format(ne1,ne2,sr1))
print('{1:},{2:},{0:}'.format(ne1,ne2,sr1))

resultado de la operación:

       Con el fin de mejorar la legibilidad, hay algunos marcadores de posición predeterminados en la siguiente aplicación, pero debe saber esto al establecer los valores predeterminados.

(2) ¡Dése cuenta de la conversión de forma de cadena y el signo de exclamación del objeto!

       Cuando utilice marcadores de posición de formato r, a y s en expresiones de formato f'' y str.format(), debe agregar un signo de exclamación para convertir el objeto en la forma de cadena correspondiente. Entre ellos, s también se puede usar detrás de los dos puntos:, que también indica el formato de la cadena, y el signo de exclamación es principalmente para los marcadores de posición r y a.

sr1='你好,python\n'
it1=12
print(f'{sr1!r},{it1!r}')
print(f'{sr1!a},{it1!a}')
print(f'{sr1!s},{it1!s}')

print('\n')
print('{!r},{!r}'.format(sr1,it1))
print('{1!r},{0!r}'.format(sr1,it1))
print('{!a},{!a}'.format(sr1,it1))
print('{1!a},{0!a}'.format(sr1,it1))
print('{!s},{!s}'.format(sr1,it1))
print('{1!s},{0!s}'.format(sr1,it1))

print('%r,%r'%(sr1,it1))
print('%a,%a'%(sr1,it1))
print('%s,%s'%(sr1,it1))

resultado de la operación:

(3) Especifique el ancho o la precisión del objeto

       Ancho (width) es adecuado para tipos numéricos y de cadena. Width indica el número de marcadores de posición. Es válido solo cuando el ancho es mayor que el número predeterminado de dígitos del objeto. Cuando el ancho es menor o igual que el número predeterminado de dígitos del objeto, el objeto utiliza el número predeterminado de dígitos. El ancho se puede representar mediante n en el marcador de posición de la Tabla 1-1.

       Cuando el ancho es mayor que el número predeterminado de dígitos del objeto, si el objeto es un tipo de número, f'', str.format() tiene como valor predeterminado la alineación a la derecha (alinear a la derecha), y más dígitos se llenan con espacios en el extremo izquierdo (un espacio ocupa un bit), si el objeto es un tipo de cadena, f'' y str.format() están alineados a la izquierda de manera predeterminada, y más dígitos se llenan con espacios en el extremo derecho, mientras que para str%(), están alineados a la derecha de forma predeterminada y más dígitos se rellenan con espacios en el extremo izquierdo.

       Además, en python, para la conversión general de punto flotante (float) o entero (int) a punto flotante, el número predeterminado de lugares decimales para el objeto es 7, y si el número de lugares decimales es insuficiente, 0 será agregarse automáticamente para formar decimales de 7 dígitos, el ancho se juzga sobre esta base.    

       Cuando las expresiones de formato f'' y str.format() usan marcadores de posición, generalmente se agregan dos puntos, y cuando las expresiones de formato str() usan marcadores de posición, generalmente se agrega %. Cuando no se especifica el ancho, las expresiones de formato f'', str.format() y str() se alinean a la izquierda de forma predeterminada.

ne1=12.73
sr1='abcde'

print(f'{ne1:10f},{sr1:7s}')

print('\n')
print('{:2f},{:7s}'.format(ne1,sr1))
print('{1:2s},{0:12f}'.format(ne1,sr1))

print('\n')
print('%2f,%2s'%(ne1,sr1))
print('%10f,%7s'%(ne1,sr1))

resultado de la operación:

       Precisión (precisión) significa mantener el número de lugares decimales en matemáticas. Se define ampliamente aquí, y precisión (precisión) es para tipos numéricos o de cadena. La precisión se puede representar mediante .m en los marcadores de posición de la Tabla 1-1.

       Para números de coma flotante, la precisión es mantener el número de lugares decimales (el número se redondea). Cuando la precisión excede el número de lugares decimales, se agrega 0 y la precisión no es adecuada para números enteros.

       Para cadenas, la precisión es el número de dígitos (número) de caracteres reservados. Cuando la precisión supera el número de dígitos del objeto, se devuelve el objeto original.

       Pero para números enteros, la precisión de f'' y str.format() no es adecuada para números enteros, y la precisión de str%() es para números enteros. Cuando la precisión es mayor que el número de dígitos (número) de números enteros, 0 se agrega a la izquierda.

       La precisión es diferente del ancho. La precisión tiene compensaciones, que pueden cambiar el objeto en sí, mientras que el ancho determina si se debe aumentar la cantidad de dígitos sin cambiar el objeto en sí. Y usando solo precisión (no se usa con ancho), f'', str.format() y str%() están todos alineados a la izquierda (alineados a la izquierda).

ne1=15.0928
ne2=627
sr1='abcde'

#f''精度不支持整数。
print(f'{ne1:.1f},{ne1:.2f},{ne2:.1f},{sr1:.1s}')

print('\n')
#str.format()精度不支持整数。
print('{:.1f},{:.2f},{:.2f},{:.2s}'.format(ne1,ne1,ne2,sr1))
print('{1:.1f},{2:.7s},{0:.5f}'.format(ne1,ne1,sr1))

print('\n')
#str%()对于整数的精度,当精度大于整数位数(个数),多的左边增加0。
print('%.1f,%.2f,%.4d,%.2s'%(ne1,ne1,ne2,sr1))
print('%.3d,%.3f,%.2d,%.8s'%(ne1,ne1,ne2,sr1))

resultado de la operación:

       

       El ancho y la precisión a menudo se usan juntos. En este momento, el ancho es el resultado del procesamiento de precisión, es decir, el procesamiento de precisión se realiza primero y luego el procesamiento de ancho se realiza de acuerdo con el resultado de este procesamiento (tenga en cuenta que el procesamiento de ancho no se realiza). sobre el objeto original). Cuando el ancho y la precisión se usan juntos, la alineación del formato de cadena para f'', str.format(), str%() está determinada por el ancho. El ancho y la precisión se pueden representar mediante nm en los marcadores de posición de la Tabla 1-1.

ne1=12.73
ne2=15.0928
sr1='abcde'

print(f'{ne1:7.1f},{ne2:5.1f},{sr1:2.1s}')

print('\n')
print('{:3.2f},{:6.2f},{:1.2s}'.format(ne1,ne2,sr1))
print('{1:7.2f},{2:4.2s},{0:5.5f}'.format(ne1,ne2,sr1))

print('\n')
print('%3.5f,%5.1f,%2.8s'%(ne1,ne2,sr1))

print('%3.1f,%4.1f,%3.2s'%(ne1,ne2,sr1))
#上面书写形式等价于下面形式。
print('%*.1f,%*.1f,%*.2s'%(3,ne1,4,ne2,3,sr1))

resultado de la operación:

       El ancho y la precisión anteriores son para los casos generales de enteros, puntos flotantes y tipos de cadena. El ancho y la precisión también se pueden usar en el caso especial de notación científica y números efectivos. El principio de usar el ancho es el mismo que el anterior, y el uso de la precisión es ligeramente diferente. .

        Notación científica z*e**k, k es el exponente, e es la base, en la computadora, e es equivalente a 10, z es mayor o igual a 1, y menor que 10, el número de lugares decimales (número ) está determinada por z .

        El ancho y la precisión también se pueden usar en notación científica. El marcador de posición en el cálculo científico es e (o E), la precisión es para determinar el número de lugares decimales (número) reservados por z, y luego el ancho se usa para juzgar el notación cientifica.

ne1=15.7634317
ne2=15.7634317

print(f'{ne1:12.2e},{ne2:6.3e}')

print('\n')
print('{:6.2e},{:12.3e}'.format(ne1,ne2))
print('{1:10.2e},{0:11.5e}'.format(ne1,ne2))

print('\n')
print('%10.2e,%e'%(ne1,ne2))

resultado de la operación:

       Las cifras significativas son para tipos numéricos. Los dígitos significativos son los números desde el primer dígito distinto de cero del número hasta el último dígito. Los decimales se redondean cuando se conservan las cifras significativas. La precisión se usa en combinación con el marcador de posición g para retener dígitos significativos. En este momento, la precisión se refiere al número de dígitos (número) de dígitos significativos reservados, y luego se juzga y procesa el ancho.

       Las cifras significativas en la notación científica anterior también están determinadas por z. El marcador de posición predeterminado después de la precisión en el formato de cadena de f'' y str.format() predeterminará el objeto que se procesará como un número válido (es decir, el valor predeterminado es g para procesar), y la precisión indica el número de dígitos que conservan el número válido (número). Cuando se trata de cifras significativas, a veces se usa la notación científica, porque las cifras significativas en la notación científica están determinadas por z, que se puede usar para representar cifras significativas para números enteros.

ne1=15.7634317
ne2=15.7634317
ne3=12680

print(f'{ne1:12.2g},{ne2:6.3g},{ne3:6.3g}')
#精度后面缺省占位符,会默认对象按有效数字处理,精度表示保留有效数字的位数(个数)。
print(f'{ne1:12.2},{ne2:6.3},{ne2:6.3f},{ne2:6}')

print('\n')
print('{:2.2g},{:12.3g}'.format(ne1,ne2))
#精度后面缺省占位符,会默认对象按有效数字处理,精度表示保留有效数字的位数(个数)。
print('{1:10.2g},{0:11.5}'.format(ne1,ne2))
print('{:2.2},{:12.3}'.format(ne1,ne2))

print('\n')
print('%10.2g,%g'%(ne1,ne2))

resultado de la operación:

       Además, el ancho y la precisión en el formato de cadena de f'' también se pueden representar mediante {entero}.{entero}.

ne1=15.7634317
sr1='abcde'

print(f'{ne1:6.3},{ne1:6.3f},{sr1:6.2s},')
print(f'{ne1:{6}.{3}},{ne1:{6}.{3}f},{sr1:{6}.{2}},{sr1:{6}.{2}s}')

resultado de la operación:

       Tenga en cuenta que el marcador de posición predeterminado en el código anterior utiliza el marcador de posición predeterminado, por ejemplo: 6.3, {6}.{3} predeterminado para el procesamiento de números válidos y {6}.{2} predeterminado para el procesamiento de cadenas.

(4) Tome el porcentaje del objeto

       Para tomar un porcentaje para un objeto, use el marcador de posición %. Para las expresiones de formato f'' y str.format(), no puede haber otros marcadores de posición. Al ejecutar, ya sea un número de punto flotante o un entero, se basa automáticamente en el valor Expanda 100 veces, luego tome la precisión y agregue un símbolo de porcentaje.

        Y str%() necesita usar %% detrás de otros marcadores de posición. Al ejecutar, ejecute otros marcadores de posición primero, luego tome la precisión y luego agregue un símbolo de porcentaje, sin expandirse 100 veces. Tenga en cuenta que hay una diferencia en el uso de números de punto flotante y precisión de enteros en str%().

ne1=15.7634317
ne2=15

print(f'{ne1:.2%},{ne2:.2%}')

print('\n')
print('{:.2%},{:.2%}'.format(ne1,ne2))

print('\n')
#下面先取浮点数,再取精度,然后再增加符号%。
print('%.3f%%,%.3f%%'%(ne1,ne2))
#下面先取整数,再取精度,精度大于整数位数时,多的在左边增加0,然后再增加符号%。
print('%.3d%%,%.3d%%'%(ne1,ne2))

resultado de la operación:

(5) Agregue un signo positivo + o un signo negativo - al objeto

      Los signos más y menos son para objetos numéricos. + se puede usar junto con un marcador de posición para indicar un signo positivo (es decir, se usa después de dos puntos: o %), y será explícito + (es decir, el objeto aumentará el símbolo +), y + será agregado en el objeto (incluido el nombre del nombre), y no se mostrará Fórmula +.

      Si el objeto es un número negativo, incluso si se agrega +, + no se mostrará; si el objeto es positivo, incluso si se agregará -, - no se mostrará, y el uso de - junto con un marcador de posición no no significa un signo negativo, solo el uso de - junto con un nombre Signo negativo (para argumentos de palabras clave, agregue - directamente al objeto), será explícito -.

ne1=15.7634317
ne2=15.7634317

print(f'{ne1:+9.2f},{ne1:-9.2f},{-ne2:9.2f},{+ne2:9.2f}')

print('\n')
print('{:+9.2f},{:9.2f},{z:5.1f}'.format(ne1,-ne2,z=-3.26))
print('{0:+9.2f},{1:-9.2f},{1:9.2f}'.format(ne1,+ne2))

print('\n')
print('%+9.2f,%-9.2f'%(ne1,ne2))
print('%+9.2f,%9.2f'%(-ne1,-ne2))

resultado de la operación:

       Tenga en cuenta que los signos + y - mencionados aquí representan signos positivos y negativos (también llamados configuraciones de signos), no como símbolos de relleno, y los símbolos de relleno se analizarán a continuación.

(6) Agregar banderas al objeto

       Las banderas (banderas) representan ciertos símbolos acordados, que producirán dichos símbolos o producirán ciertos efectos en el formato. Aquí, los dos puntos: (o %) y otros símbolos utilizados junto con los marcadores de posición se consideran banderas para reducir las distinciones excesivas, y los símbolos en otras posiciones no se consideran banderas. Lo siguiente se distingue principalmente desde la perspectiva de realizar funciones, por lo que ya no distinguimos entre llenar, alinear, firmar y grouping_option De hecho, son solo los nombres generales de los símbolos que representan las funciones correspondientes.

  • 0 se usa junto con el ancho y se puede completar con 0

      0 se usa junto con el ancho. Cuando el ancho es mayor que el número de dígitos del objeto, la mayoría de los dígitos se llenarán con 0 en lugar de espacios en blanco de forma predeterminada. Para la expresión de formato str%(), 0 y ancho no son adecuados para el tipo de cadena. Tenga en cuenta que 0 se usa junto con ancho aquí.

ne1=15.7634317
ne2=15.7634317
sr1='abcde'
lt1=[192, 168, 0, 1]

print(f'{ne1:09.2f},{ne2:02.2f},{sr1:09.2s}')

print('\n')
print('{:02.2f},{:07.2f},{:09.2s}'.format(ne1,ne2,sr1))
print('{1:02.3f},{0:09.5f},{2:07.3s}'.format(ne1,ne2,sr1))
#*lt1是一个位置参数,*具有解包作用,*lt1解包为三个数字类型的对象,
#也即三个整数的位置实参,参见前面关于解包、参数的知识。
#下面{}按顺序对应,省去了序数,X是十六进制,2是宽度(width),
#打印时默认右对齐,内容不够时用0在左边填充。
print('{:02X}{:02X}{:02X}{:02X}'.format(*lt1))

print('\n')
#对于str%()格式化表达式,0与宽度联用不适合字符串。
print('%09.2f,%02.2f,%09.2s'%(ne1,ne2,sr1))
print('%09.2f,%02.2f,%9.2s'%(ne1,ne2,sr1))

resultado de la operación:

  • Agregar manualmente un espacio a la izquierda de los objetos numéricos

      Cuando el ancho es mayor que el número de dígitos del objeto (si hay precisión, se debe tomar el objeto después de la precisión), se usa el espacio de relleno predeterminado y el espacio agregado manualmente no es válido. De lo contrario, los espacios agregados manualmente son valid, y f'', str.format Los dos puntos de (): solo se puede agregar un espacio después del símbolo % de str%(), incluso si se agregan varios espacios después del símbolo % de str%(), solo uno el espacio es realmente válido.

ne1=15.763

print(f'{ne1: .1f},{ne1: f}')
print(f'{ne1: 5.1f}')
print(f'{ne1: 2.1f}')

print('\n')
print('{: .2f}'.format(ne1))
print('{:5.2f}'.format(ne1))
print('{: 5.2f}'.format(ne1))

print('\n')
print('%        .2f'%ne1)
print('%7.2f'%ne1)
print('% 7.2f'%ne1)

resultado de la operación:

  • Controle la alineación a la izquierda, a la derecha o al centro (- , < , > , ^ , =) y relleno

       -Utilizado junto con marcadores de posición para la alineación a la izquierda (alineación a la izquierda), en realidad solo es adecuado para expresiones de formato str%(). -Utilizado junto con un marcador de posición, la alineación derecha predeterminada original se convierte en alineación izquierda y la alineación izquierda predeterminada permanece sin cambios. Después de la alineación a la izquierda, para el uso del ancho, cuando el ancho es mayor que el número de dígitos del objeto, el espacio derecho se llena de forma predeterminada. El ancho y la precisión no se especifican, - no tiene ningún efecto, lo que equivale al número predeterminado de dígitos.

       -Usado junto con marcadores de posición no significa un signo menos, - solo junto con un nombre significa un signo menos (para argumentos de palabras clave, agregue directamente - al objeto).

ne1=15.7634317
ne2=15.7634317
sr1='abcde'

#f''中-只能对数字型由作用,但没作用。
print(f'{ne1:9.2f},{ne2:.2f},{sr1:9.2s}')
print(f'{ne1:-9.2f},{ne2:-.2f},{sr1:9.2s}')
#下面实际等效于print(f'{ne1:f},{ne2:f},{sr1:s}')
print(f'{ne1:-f},{ne2:-f},{sr1:s}')

print('\n')
#str.format()中-只能对数字型由作用,但没作用。
print('{:2.2f},{:7.2f},{:9.2s}'.format(ne1,ne2,sr1))
print('{:-2.2f},{:-7.2f},{:9.2s}'.format(ne1,ne2,sr1))
#下面实际等效于print('{:f},{:f},{:s}'.format(ne1,ne2,sr1))
print('{:-f},{:-f},{:s}'.format(ne1,ne2,sr1))

print('\n')
#str%()中用-后左对齐,原来默认的右对齐的变为左对齐,默认左对齐的不变。
print('%9.2f,%.2f,%9.2s'%(ne1,ne2,sr1))
print('%-9.2f,%-.2f,%-9.2s'%(ne1,ne2,sr1))
#下面实际等效于print('%f,%f,%s'%(ne1,ne2,sr1))
print('%-f,%-f,%-s'%(ne1,ne2,sr1))

resultado de la operación:

       < se usa junto con marcadores de posición para la alineación a la izquierda, solo es adecuado para expresiones de formato f'', str.format(). < se usa junto con el marcador de posición para hacer que el original alineado a la derecha predeterminado se alinee a la izquierda, y el alineado a la izquierda predeterminado permanece sin cambios. Después de la alineación a la izquierda, para el uso del ancho, cuando el ancho es mayor que el número de dígitos del objeto, el espacio derecho se llena de forma predeterminada. El ancho y la precisión no se especifican, < no tiene ningún efecto, lo que equivale al número predeterminado de dígitos.

ne1=15.7634317
ne2=15.7634317
sr1='abcde'

#f''中用<后左对齐,原来默认的右对齐的变为左对齐,默认左对齐的不变。
print(f'{ne1:<9.2f},{ne2:<.2f},{sr1:<9.2s}')
#下面实际等效于print(f'{ne1:f},{ne2:f},{sr1:s}')
print(f'{ne1:<f},{ne2:<f},{sr1:<s}')

print('\n')
#str.format()中用<后左对齐,原来默认的右对齐的变为左对齐,默认左对齐的不变。
print('{:<2.2f},{:<7.2f},{:<9.2s}'.format(ne1,ne2,sr1))
#下面实际等效于print('{:f},{:f},{:s}'.format(ne1,ne2,sr1))
print('{:<f},{:<f},{:<s}'.format(ne1,ne2,sr1))

resultado de la operación:

      >Utilizado junto con marcadores de posición para la alineación correcta, solo adecuado para expresiones de formato f'', str.format(). < se usa junto con el marcador de posición para hacer que el original alineado a la izquierda predeterminado se alinee a la derecha, y el alineado a la derecha predeterminado permanece sin cambios. Después de la alineación a la derecha, para el uso del ancho, cuando el ancho es mayor que el número de dígitos del objeto, el espacio izquierdo se llena de forma predeterminada. Si no se especifica el ancho y la precisión, > no tiene ningún efecto, lo que equivale al número predeterminado de dígitos.

ne1=15.7634317
ne2=15.7634317
sr1='abcde'

#f''中用>后右对齐,原来默认的左对齐的变为右对齐,默认右对齐的不变。
print(f'{ne1:>9.2f},{ne2:>.2f},{sr1:>9.2s}')
#下面实际等效于print(f'{ne1:f},{ne2:f},{sr1:s}'),
print(f'{ne1:>f},{ne2:>f},{sr1:>s}')

print('\n')
#str.format()中用>后右对齐,原来默认的左对齐的变为右对齐,默认右对齐的不变。
print('{:>2.2f},{:>7.2f},{:>9.2s}'.format(ne1,ne2,sr1))
#下面实际等效于print('{:f},{:f},{:s}'.format(ne1,ne2,sr1))
print('{:>f},{:>f},{:>s}'.format(ne1,ne2,sr1))

resultado de la operación:

       ^ se usa junto con marcadores de posición para la alineación central (alineación media), y solo es adecuado para expresiones de formato f'', str.format(). ^ se usa junto con un marcador de posición para hacer que la alineación izquierda o derecha predeterminada original se centre. Después de centrar, para el uso del ancho, cuando el ancho es mayor que el número de dígitos del objeto, los espacios en ambos lados se llenarán silenciosamente.Cuando el número es par, el relleno en ambos lados es simétrico, y cuando el número es impar, hay un espacio más a la derecha. Si no se especifica el ancho y la precisión, ^ no tiene efecto, lo que equivale al número de dígitos predeterminado.

ne1=15.7634317
ne2=15.7634317
sr1='abcde'

#f''中用^后居中。
print(f'{ne1:^9.2f},{ne2:^.2f},{sr1:^3.2s}')
#下面实际等效于print(f'{ne1:f},{ne2:f},{sr1:s}'),
print(f'{ne1:^f},{ne2:^f},{sr1:^s}')

print('\n')
#str.format()中用^后居中。
print('{:^2.2f},{:^7.2f},{:^9.2s}'.format(ne1,ne2,sr1))
#下面实际等效于print('{:f},{:f},{:s}'.format(ne1,ne2,sr1))
print('{:^f},{:^f},{:^s}'.format(ne1,ne2,sr1))

resultado de la operación:

      La alineación a la izquierda, la alineación a la derecha y el centrado de los <, > y ^ anteriores se conocen colectivamente como la configuración de alineación. <, > y ^ se pueden rellenar con cualquier carácter, como: *, &, 0, ¥ , $, un, etc.

ne1=15.7634317
ne2=15.7634317
sr1='abcde'
print(f'{ne1:&<9.2f},{ne2:0<7.2f},{sr1:$<4.2s}')
print(f'{ne1:&>9.2f},{ne2:c>7.2f},{sr1:$>4.2s}')
print(f'{ne1:*^9.2f},{ne2:¥^7.2f},{sr1:$^4.2s}')

print('\n')
print('{:&<9.2f},{:0<7.2f},{:$<9.2s}'.format(ne1,ne2,sr1))
print('{:&>9.2f},{:d>7.2f},{:$>9.2s}'.format(ne1,ne2,sr1))
print('{:*^2.2f},{:&^7.2f},{:0^9.2s}'.format(ne1,ne2,sr1))

resultado de la operación:

       = se usa junto con marcadores de posición, solo es adecuado para f'', expresión con formato str.format() de objetos numéricos, de acuerdo con la alineación predeterminada (por ejemplo: alineación por ancho o precisión), pero cuando = está precedido por un signo (cuando el símbolo aquí no incluye el nombre del nombre), este símbolo se colocará en el extremo izquierdo. Para el uso del ancho, después de la alineación a la derecha, cuando el ancho es mayor que el número de dígitos del objeto, el espacio izquierdo se llenará de manera predeterminada (si se especifica el símbolo de relleno, se llenará de acuerdo con el símbolo).

ne1=15.7634317
ne2=15.7634317

#=不仅可以使用符号填充,而且能对前面的负号-产生作用,使其放在最左侧。
print(f'{ne1:9.2f},{ne1:=9.2f},{ne2:*=9.2f},{ne2:*=2.2f}')
print(f'{-ne1:=9.2f},{-ne2:9.2f}')
#下面实际等效于print(f'{ne1:f},{ne2:f}'),
print(f'{ne1:=f},{ne2:=f}')

print('\n')
print('{:9.2f},{:&=9.2f}'.format(ne1,ne2))
print('{:9.2f},{:=9.2f}'.format(ne1,-ne2))
#下面实际等效于print('{:f},{:f}'.format(ne1,ne2))
print('{:=f},{:=f}'.format(ne1,ne2))

resultado de la operación:

       = en realidad no tiene efecto de alineación, está alineado de manera predeterminada, pero puede hacer que el símbolo anterior (el símbolo aquí no incluye el nombre del nombre) se coloque en el extremo izquierdo. El signo negativo en el código anterior no puede producir efectos similares para <, >, ^ y otros métodos de alineación mencionados anteriormente. El signo se considera parte del objeto, y el objeto en realidad se trata por separado del signo menos.

       Además, = se usa junto con nombre en la expresión de formato f'' (si hay dos puntos:, entonces = está delante de los dos puntos:), lo que indica que el símbolo = en sí mismo, similar al símbolo de asignación.

ne1=15.7634317
sr1='abcd'
lt1=[1,2,3]
#下面使用了占位符,但缺省。
#占位符可以缺省,缺省时按默认的占位符。
#str.format()不支持下面的表达方式。
print(f'{ne1=:9.2f},{ne1=:9.2},{ne1:},{sr1=:.2s},{sr1=:.2},{sr1=:}')
print(f'{-ne1=:9.2f},{-ne1=:9.2},{-ne1:}')

print('\n')
#下面没用到冒号:,没用到占位符。
#下面前后有多少空格,都会在对应位置增加多少空格,
#但这里的空格不能用其它符号替代。
#str.format()不支持下面的表达方式。
print(f'{    ne1=   }')
print(f'{    sr1=   }')

print('\n')
#下面实际没用到冒号:,没用到占位符,与上面使用不同,
#下面的使用实际是增加了字符描述,前面已经讲述。
print(f'a={lt1[0]},b={lt1[1]}')
#str.format(),虽然format只有一个位置参数,但下面是对lt1局部取值,因而序数0不能缺省。
print('a={0[0]},b={0[1]}'.format(lt1))

resultado de la operación:

       Tenga en cuenta que después del marcador de posición predeterminado en el código anterior, el código se ejecutará de acuerdo con el marcador de posición predeterminado cuando el código se está ejecutando, y 9.2 en el código anterior se procesará de acuerdo con la notación científica que es un número válido de forma predeterminada.

  • agrupar la parte entera de un objeto

      La parte entera del tipo de número se puede agrupar por coma, o guión bajo_, en un grupo de dígitos 3. Esta operación también se denomina configuración de agrupación grouping_option. Cuando hay anchura o precisión, el signo o _ debe colocarse después de la anchura y antes de la precisión. La agrupación es realmente válida para tipos enteros, pero no para tipos de punto flotante.

ne1=1538.763
ne2=12000
ne3=15.763

print(f'{ne1:,f};{ne2:,};{ne2:,d};{ne2:9,};{ne2:9,d};{ne3:,f}')
print(f'{ne1:_f};{ne2:_};{ne2:_d};{ne2:9_.2f};{ne2:9_d}')

print('\n')
print('{:,f};{:_d};{:,f}'.format(ne1,ne2,ne3))
print('{:9,.2f};{:9,.2f};{:,f}'.format(ne1,ne2,ne3))

resultado de la operación:

         Tenga en cuenta que después del marcador de posición predeterminado en el código anterior, el código se ejecutará de acuerdo con el marcador de posición predeterminado cuando se ejecute.

  • Los objetos binarios, octales y hexadecimales muestran los correspondientes 0b , 0o y 0x

       El símbolo # (o #0) se usa junto con el marcador de posición base para aumentar 0b para objetos binarios, 0o para objetos octales y 0x para objetos hexadecimales. Tenga en cuenta que str%() no admite binarios.

ne1=17

print(f'{ne1:#b},{ne1:#o},{ne1:#x}')
print(f'{ne1:#0b},{ne1:#0o},{ne1:#0x}')#也可以用#0

print('\n')
print('{0:#b},{0:#o},{0:#x}'.format(ne1))
print('{0:#0b},{0:#0o},{0:#0x}'.format(ne1))#也可以用#0

print('\n')
#str%()不支持二进制。
print('%#o,%#x'%(ne1,ne1))
print('%#0o,%#0x'%(ne1,ne1))#也可以用#0

resultado de la operación:

      Lo anterior describe el uso de marcadores de posición. Podemos usar varias funciones juntas. Los ejemplos no se enumeran aquí. Específicamente, las funciones anteriores se pueden usar en combinación.

5. Formatos de fecha y hora de las expresiones de formato f'', str.format() y str%()

       El formato de cadena de fecha y hora es adecuado para expresiones de formato f'' y str.format(), y los símbolos de formato de fecha y hora aquí son diferentes de los marcadores de posición mencionados anteriormente. Para distinguirlos, se les llama aquí Es un carácter de formato de fecha y un carácter de formato de hora. Tanto el carácter de formato de fecha como el carácter de formato de hora tendrán un símbolo % seguido de una letra. f'', str.format() indica el formato de fecha y hora, y son dos puntos: se usa junto con el carácter de formato de fecha y el carácter de formato de hora.

        Los símbolos de formato de fecha y hora de uso común se muestran en la Tabla 5-1 a continuación.

Tabla 5-1 Caracteres de formato de fecha y hora

%Y

Año de cuatro dígitos (0000-9999)

%y

Año de dos dígitos (00-99)

%B

Mes en inglés (p. ej.: noviembre)

%metro

mes (01-12)

%D

Mes/Día/Año (p. ej.: 05/12/23)

%d

día (01-31)

%H

24 horas (00-23)

% h

Mes de la letra abreviada (p. ej.: Nov)

%I

12 horas (01-12)

%pag

AM ( mañana) o PM (tarde)

%METRO

minutos (00-59)

%j

El día del año (001-366)

%S

segundos (00-59)

%F

microsegundo

%X

Hora (p. ej.: 10:32:02)

%X

fecha (por ejemplo: 16/01/23)

%A

Semana inglesa (p. ej.: domingo)

%a

Letras abreviadas de la semana (por ejemplo: Sun)

%W

El número de la semana del año (00-53), el lunes es el comienzo de la semana

%v

Día de la semana (0-6), el domingo es el comienzo de la semana

%U

El número de la semana del año (00-53), el domingo es el comienzo de la semana

%u

Día de la semana (1-7), el lunes es el comienzo de la semana

%Z

El nombre de la zona horaria local, si no hay nadie, devuelve un carácter nulo y el local puede entenderse como el dispositivo actual.

%C

La representación predeterminada de fecha y hora (p. ej.: dom 5 de noviembre 12:32:02 2023)

%%

Indica el símbolo %

 

 

       Los símbolos de formato de fecha y hora en la Tabla 5-1 anterior son generalmente adecuados para las expresiones de formato f'' y str.format(). f'' y str.format() indican que la fecha y la hora tienen ciertas limitaciones en la expresión. De hecho, el formato de fecha y hora tiene funciones (o métodos) correspondientes, tales como: módulos de fecha y hora.

       Hay muchas maneras de obtener la fecha y la hora en python, y no las discutiremos aquí. Aquí hay un ejemplo de código para mostrar f'', la representación formateada de fecha y hora de str.format(), el especificador de formato de fecha y formato de hora en el código La función representada por el carácter se puede entender en combinación con los resultados de impresión. El carácter de formato de fecha y el carácter de formato de hora se pueden separar mediante símbolos. En general, se pueden utilizar comas. El carácter de formato de fecha y el carácter de formato de hora representa diferentes funciones.

import datetime

de1= datetime.datetime(year=2023,month=11,day=5)
print(de1)
print(f'{de1:%B %D,%Y};{de1:%m %D,%Y};{de1:%b,%d,%y};{de1:%B,%Y,%d}')
print('{0:%B,%d,%Y,%A},{0:%B-%d-%Y}'.format(de1))

print('\n')
de1= datetime.datetime(year=2023,month=11,day=5,hour=12,minute=32,second=2,microsecond=20)
print(de1)
print(f'{de1:%B %D,%Y,%H,%M,%S,%f,%a}')
print('{:%m %D,%Y,%H,%M,%S,%f}'.format(de1))

print('\n')
de1= datetime.date.today()
print(de1)
print(f'{de1:%B %d,%Y};{de1:%b,%d,%Y};{de1:%B,%y,%d}')
print('{0:%m,%D,%Y};{0:%b %d,%y}'.format(de1))

print('\n')
de1=  datetime.datetime.now()
print(de1)
de2=de1.date()#获取日期
print(de2)
de3=de1.time()#获取时间
print(de3)
print(f'{de1:%B,%D,%Y,%H,%M,%S}')
print('{:%m,%D,%Y};{:%H:%M:%S}'.format(de2,de3))

resultado de la operación:

Explicación detallada del formato de cadenas de f'', str.format() y str%() en Python (1):

https://blog.csdn.net/thefg/article/details/130940550

¡Finalmente, le invitamos a que le guste, marque como favorito y siga!

Supongo que te gusta

Origin blog.csdn.net/thefg/article/details/130941724
Recomendado
Clasificación