Sven E.
No puedo hacer que f-strings funcione en Python 3. Intenté esto en REPL:
In [1]: state = "Washington"
In [2]: state
Out[2]: 'Washington'
In [3]: my_message = f"I live in {state}"
File "<ipython-input-3-d004dd9e0255>", line 1
my_message = f"I live in {state}"
^
SyntaxError: invalid syntax
Supuse que mi máquina estaba por defecto en python 2, pero una revisión rápida revela:
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
Type "copyright", "credits" or "license" for more information.
IPython 5.2.2 -- An enhanced Interactive Python.
¿Qué está mal y cómo lo soluciono?
Como sugirió Josh Lee en la sección de comentarios, ese tipo de interpolación de cadenas se agregó solo en Python 3.6, consulte Novedades en Python 3.6 (aquí se llama “PEP 498: literales de cadena con formato”).
Sin embargo, parece estar usando Python 3.5.2, que no admite esa sintaxis.
Esta es una pregunta bastante antigua y no estoy seguro si se respondió en otro lugar, pero me encontré con el mismo problema y aterrizó en algunas páginas confusas. Me di cuenta un par de minutos después. Debajo de la línea debería funcionar.
my_message = "I live in {}".format(state)
.format funciona para 3.5. Documentándolo aquí para alguien que pueda necesitarlo por un problema similar.
-
De todo lo que probé, esto fue lo único que funcionó. ¡Gracias!
– Farid
21 de enero de 2020 a las 7:56
Lo que funcionó para mí (en python 3.8.5 en sublime) fue eliminar el archivo f.
message = "I live in {state}"
lo encuentro mas facil que .format(state)
-
Bueno, “funciona” en el sentido de que no da un error de sintaxis… si hace lo que se pretendía es otra cuestión.
– tonto4jesús
8 de septiembre de 2020 a las 12:54
-
Esto no arrojará un error, pero no interpolará su
state
valor en la cadena de salida.– Sven E.
20 de abril de 2022 a las 17:21
¿Qué versión de python estaban usando los demás? Parece que has respondido a tu propia pregunta. docs.python.org/3/whatsnew/…
– Josh Lee
9 de febrero de 2017 a las 1:42
@yeputons, evita responder preguntas en los comentarios. Agrega una respuesta.
– Adrián Sanguineti
9 de febrero de 2017 a las 2:24
Es una llamada cercana, pero creo que las respuestas para la otra pregunta fueron ligeramente mejores en general, así que estoy haciendo que esa sea la canónica.
– Karl Knechtel
22 de enero a las 2:59