separar - funcion format en python
Formato de cadena de Python con signo de porcentaje (3)
Estoy tratando de hacer exactamente lo siguiente:
>>> x = (1,2)
>>> y = ''hello''
>>> ''%d,%d,%s'' % (x[0], x[1], y)
''1,2,hello''
Sin embargo, tengo una x
larga, más de dos elementos, así que intenté:
>>> ''%d,%d,%s'' % (*x, y)
pero es un error de sintaxis. ¿Cuál sería la forma correcta de hacer esto sin indexar como el primer ejemplo?
Le sugiero que use str.format
lugar de str %
ya que es "más moderno" y también tiene un mejor conjunto de características. Dicho lo que quieres es:
>>> x = (1,2)
>>> y = ''hello''
>>> ''{},{},{}''.format(*(x + (y,)))
1,2,hello
Para todas las características interesantes de format
(y algunas relacionadas con %
también), eche un vistazo a PyFormat .
Tal vez echar un vistazo a str.format() .
>>> x = (5,7)
>>> template = ''first: {}, second: {}''
>>> template.format(*x)
''first: 5, second: 7''
Actualizar:
Para completar, también estoy incluyendo las generalizaciones de desempaque adicionales descritas por PEP 448 . La sintaxis extendida se introdujo en Python 3.5 , y lo siguiente ya no es un error de sintaxis:
>>> x = (5, 7)
>>> y = 42
>>> template = ''first: {}, second: {}, last: {}''
>>> template.format(*x, y) # valid in Python3.5+
''first: 5, second: 7, last: 42''
Sin embargo, en Python 3.4 y versiones anteriores , si desea pasar argumentos adicionales después de la tupla desempaquetada, probablemente sea mejor que los pase como argumentos con nombre :
>>> x = (5, 7)
>>> y = 42
>>> template = ''first: {}, second: {}, last: {last}''
>>> template.format(*x, last=y)
''first: 5, second: 7, last: 42''
Esto evita la necesidad de construir una tupla nueva que contenga un elemento adicional al final.
str % ..
acepta una tupla como un operando de mano derecha, por lo que puede hacer lo siguiente:
>>> x = (1, 2)
>>> y = ''hello''
>>> ''%d,%d,%s'' % (x + (y,)) # Building a tuple of `(1, 2, ''hello'')`
''1,2,hello''
Su intento debería funcionar en Python 3. donde se admiten Additional Unpacking Generalizations
, pero no en Python 2.x:
>>> ''%d,%d,%s'' % (*x, y)
''1,2,hello''