Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

264
Vistas
¿Cómo usar la nueva línea '\ n' en f-string para formatear la salida en Python 3.6?

Me gustaría saber cómo formatear este caso de forma Pythonic con f-strings:

 names = ['Adam', 'Bob', 'Cyril'] text = f"Winners are:\n{'\n'.join(names)}" print(text)

El problema es que '\' no se puede usar dentro de las porciones de expresión {...} de una cadena f. Rendimiento esperado:

 Winners are: Adam Bob Cyril
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

no puedes Las barras invertidas no pueden aparecer dentro de las llaves {} ; hacerlo da como resultado un error de SyntaxError :

 >>> f'{\}' SyntaxError: f-string expression part cannot include a backslash

Esto se especifica en el PEP para f-strings:

Las barras invertidas pueden no aparecer dentro de las porciones de expresión de f-strings, [...]

Una opción es asignar '\n' a un nombre y luego .join a eso dentro de la cadena f ; es decir, sin usar un literal:

 names = ['Adam', 'Bob', 'Cyril'] nl = '\n' text = f"Winners are:{nl}{nl.join(names)}" print(text)

Resultados en:

 Winners are: Adam Bob Cyril

Otra opción, según lo especificado por @wim, es usar chr(10) para obtener \n devuelto y luego unirse allí. f"Winners are:\n{chr(10).join(names)}"

Otro, por supuesto, es '\n'.join antemano y luego agregar el nombre en consecuencia:

 n = "\n".join(names) text = f"Winners are:\n{n}"

lo que da como resultado la misma salida.

Nota:

Esta es una de las pequeñas diferencias entre f -strings y str.format . En este último, siempre puede usar la puntuación siempre que se haya desempaquetado un dictado loco correspondiente que contenga esas claves:

 >>> "{\\} {*}".format(**{"\\": 'Hello', "*": 'World!'}) "Hello World!"

(Por favor, no hagas esto.)

En el primero, la puntuación no está permitida porque no puede tener identificadores que los usen.


Aparte: definitivamente optaría por print o format , como sugieren las otras respuestas como alternativa. Las opciones que he dado solo se aplican si, por alguna razón, debe usar f-strings.

El hecho de que algo sea nuevo no significa que debas intentar hacer todo con él ;-)

over 4 years ago · Santiago Trujillo Denunciar

0

No necesita f-strings u otros formateadores para imprimir una lista de cadenas con un separador. Simplemente use el argumento de la palabra clave sep para print() :

 names = ['Adam', 'Bob', 'Cyril'] print('Winners are:', *names, sep='\n')

Producción:

 Winners are: Adam Bob Cyril

Dicho esto, usar str.join() / str.format() aquí podría decirse que sería más simple y más legible que cualquier solución alternativa f-string:

 print('\n'.join(['Winners are:', *names])) print('Winners are:\n{}'.format('\n'.join(names)))
over 4 years ago · Santiago Trujillo Denunciar

0

No puede usar barras invertidas en f-strings como han dicho otros, pero puede evitar esto usando os.linesep (aunque tenga en cuenta que esto no será \n en todas las plataformas, y no se recomienda a menos que lea/escriba archivos binarios; ver los comentarios de Rick ):

 >>> import os >>> names = ['Adam', 'Bob', 'Cyril'] >>> print(f"Winners are:\n{os.linesep.join(names)}") Winners are: Adam Bob Cyril

O quizás de una manera menos legible, pero con garantía de ser \n , con chr() :

 >>> print(f"Winners are:\n{chr(10).join(names)}") Winners are: Adam Bob Cyril
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda