English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Introducción
Python en 2.6 En la nueva versión se ha añadido un método de formateo de cadena: str.format(). Su sintaxis básica es reemplazar {} y : por % en el formato anterior.
sintaxis de sustituto de marcadores de posición durante la formateo:
replacement_field ::= "{" [field_name] ["!" conversion] [":" format_spec] "}"
regla de "mapa"
A través de la posición
str.format() puede aceptar un número ilimitado de parámetros y los positions no tienen que seguir el orden:
>>> "{0} {1).format("hello", "world") "hola mundo" >>> "{0} {1}".format("hello", "world") "hola mundo" >>> "{1} {0} {1).format("hello", "world") "mundo hola mundo"
A través de parámetros clave
Al usar parámetros clave, es necesario proporcionar el nombre del parámetro en la cadena:
>>> "Yo soy {name}, la edad es {age}".format(name="huoty", age=18) "Soy huoty, mi edad es 18' >>> user = {"name": "huoty", "age": 18} >>> "Yo soy {name}, la edad es {age}".format(**user) "Soy huoty, mi edad es 18'
A través de las propiedades del objeto
str.format() puede leer directamente las propiedades del usuario:
>>> class User(object): ... def __init__(self, name, age): ... self.name = name ... self.age = age ... ... def __str__(self): ... return "{self.name}({self.age})".format(self=self) ... ... def __repr__(self): ... return self.__str__() ... ... >>> user = User("huoty", 18) >>> user huoty(18) >>> "Soy {user.name}, mi edad es {user.age}".format(user=user) "Soy huoty, mi edad es 18'
A través de índices
En una cadena de formato necesaria, se puede acceder a los elementos mediante índices:
>>> names, ages = ["huoty", "esenich", "anan"], [18, 16, 8]} >>> "Soy {0[0]}, mi edad es {1[2]}".format(names, ages) "Soy huoty, mi edad es 8' >>> users = {"names": ["huoty", "esenich", "anan"], "ages": [18, 16, 8]} >>> "Soy {names[0]}, mi edad es {ages[0]}".format(**users)
Especificar conversión
Se puede especificar el tipo de conversión de la cadena:
conversion ::= "r" | "s" | "a"
Donde "!r" corresponde a repr(); "!s" corresponde a str(); "!a" corresponde a ascii(). Ejemplo:
>>> "repr() muestra comillas: {!r}; str() no prueba: {!s}".format('test1', 'test2') "repr() muestra comillas: 'test1'; str() no prueba:2"
Símbolo de formato
Relleno y alineamiento
El relleno se utiliza a menudo junto con el alineamiento. ^, <, > representan centrado, alineado a la izquierda y alineado a la derecha, respectivamente. Después de la anchura, el símbolo : indica el carácter de relleno, que debe ser solo un carácter. Si no se especifica, se utiliza espacio en blanco por defecto.
>>> "{:>}8".format("181716)") ' 181716' >>> "{:0>8".format("181716)") "00181716' >>> "{:->8".format("181716)") '--181716' >>> "{:-<8".format("181716)") '181716--' >>> "{:-^8".format("181716)") '-181716-' >>> "{:-<25}>".format("Here ") "Here --------------------"
Precisión de flotante
Usar f para tipo de flotante y se puede agregar control de precisión antes de él:
>>> "[ {:.2f} ]".format(321.33345) '[ 321.33 ]' >>> "[ {:.1f} ]".format(321.33345) '[ 321.3 ]' >>> "[ {:.4f} ]".format(321.33345) '[ 321.3335 ]' >>> "[ {:.4f} ]".format(321) '[ 321.0000 ]'
También se puede especificar el símbolo para números de coma flotante:+ Indica que se muestra antes de números positivos +Mostrando antes de números negativos -; (espacio) indica que se agrega un espacio antes de números positivos, y antes de números negativos se agrega -;- Es igual a nada más que ({:f}):
>>> '{:+f}; {:+f}'.format(3.141592657, -3.141592657) '+3.141593; -3.141593' >>> '{: f}; {: f}'.format(3.141592657, -3.141592657) ' 3.141593; -3.141593' >>> '{:f}; {:f}'.format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> '{:-f}; {:-f}'.format(3.141592657, -3.141592657) '3.141593; -3.141593' >>> '{:+.4f}; {:+.4f}'.format(3.141592657, -3.141592657) '+3.1416; -3.1416'
Especificar el sistema de numeración
>>> "int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".format(18) "int: 18; hex: 12; oct: 22; bin: 10010' >>> "int: {0:d}; hex: {0:#x}; oct: {0:#o}; bin: {0:#b}".format(18) "int: 18; hex: 0x12; oct: 0o22; bin: 0b10010'
Separador de miles
Se puede usar "," como separador de miles:
>>> '{:,}'.format(1234567890) '1,234,567,890'
Visualización de porcentajes
>>> "progress: {:.2%".format(19.88/22) "progress: 90.36%'
De hecho, format también admite más símbolos de tipo:
type ::= "b" | "c" | "d" | "e" | "E" | "f" | "F" | "g" | "G" | "n" | "o" | "s" | "x" | "X" | "%"
Otras técnicas
Anidación de placeholders
A veces, la anidación de placeholders es muy útil:
>>> '{0:{fill}{align}16}'.format("hello", fill='*', align='^') '*****hello******' >>> >>> for num in range(5,12): ...for base in "dXob": ... print("{0:{width}{base}}".format(num, base=base, width=}}5), end=' ') ... print() ... ... 5 5 5 101 6 6 6 110 7 7 7 111 8 8 10 1000 9 9 11 1001 10 A 12 1010 11 B 13 1011
Usar como función
Puede no especificar los parámetros de formato y llamarlo como una función en lugares no deseados:
>>> email_f = "Tu dirección de correo electrónico fue {email}".format >>> print(email_f(email="[email protected]")) Tu dirección de correo electrónico fue [email protected]
Corchetes de escape
Cuando se necesita usar corchetes en una cadena, se pueden usar corchetes para escapar:
>>> "El conjunto {} se representa a menudo como {{0}}".format("vacío") El conjunto vacío a menudo se representa como {0}
Resumen
Eso es todo el contenido de este artículo, espero que el contenido de este artículo pueda ayudar a algunos de ustedes en su aprendizaje o trabajo. Si tienen alguna pregunta, pueden dejar comentarios para intercambiar, gracias por su apoyo a Tutorial de Gritar.
Declaración: Este contenido ha sido proporcionado por la red, pertenece al autor original, ha sido subido por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no ha sido editado por humanos y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#w3Declaración: El contenido de este artículo se ha obtenido de la red, es propiedad del autor original, el contenido se ha contribuido y subido por los usuarios de Internet, este sitio web no posee los derechos de propiedad, no se ha realizado un procesamiento editorial humano y no asume ninguna responsabilidad legal. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#w