Editando la respuesta para que coincida con el ejemplo del código.
for ch in f: (translatedToken = english_hindi_dict[ch]) if (ch in english_hindi_dict) else (translatedToken = ch)
simplemente no es válida Python.
En primer lugar, el conteo de legibilidad. Su código es difícil de leer y, por lo tanto, es difícil de depurar. ¿Qué es "ch" y "f"? Además, puedes hacer un trazador de líneas en Python pero no es recomendable, así que pon el for
en una línea separada. Luego sangría.
for chunk in file:
(translatedToken = english_hindi_dict[chunk]) if (chunk in english_hindi_dict) else (translatedToken = chunk)
Ahora podemos ver lo que está mal. Haces asignaciones variables en una instrucción condicional. Esto no está permitido en Python. Supongo que tienes un fondo de C/C++ y se utilizan para hacer eso. En Python no puedes, para evitar que escribas código ofuscado. Entonces termina con:
for chunk in file:
translatedToken = english_hindi_dict[chunk] if chunk in english_hindi_dict else chunk
Este código debería funcionar, siempre que utilice Python 2.5+. Pero el operador ternario aún no está disponible en la versión anterior de Python. Vamos a hacer un poco más amable:
for chunk in file:
translatedToken = chunk
if chunk in english_hindi_dict:
translatedToken = english_hindi_dict[chunk]
Es posible argumentar que es más tiempo para escribir, y estaríamos en lo cierto. Pero pasas más tiempo leyendo el código que escribiéndolo, por lo que tiene sentido que sea fácil de leer. O, por supuesto, una vez que tengas el agarre Python, intentarás que funcione de una manera más pitonica. ¿Has oído hablar de EAFTP?
for chunk in file:
try:
translatedToken = english_hindi_dict[chunk]
except KeyError:
translatedToken = chunk
Pero Python está llena de sorpresas, y usted aprenderá que la mayoría de estos casos de uso clásicos ya han sido atendidos. La biblioteca estándar a menudo proporciona una solución todavía legible elegante y corto:
for chunk in file:
translatedToken = english_hindi_dict.get(chunk, chunk)
Como conclusión: no tratan de escribir Python como usted escribió C o Java y como se escribirían Perl. Otra herramienta, otro estilo.
Para solucionar este problema, el fuego de su función de editor de "buscar y reemplazar" y crea un enorme "Reemplazar todos" para cambiar todas las fichas por 4 espacios, o al contrario. Luego sangra todos tus bloques, y finalmente alinea todas las instrucciones en el mismo bloque.
Gracioso que no apareció antes en SO. Después de todo, es verdad, no es tan obvio.
En Python, separa bloques utilizando espacios o pestañas, no "{".
De modo que cada vez que baje un bloque (una función, un bucle, una clase, etc.), debe aplicar sangría a su código. Esto no es solo una buena práctica, esto es obligatorio. Tu programa se bloqueará si no lo haces.
Ahora, la mayoría de las veces, obtiene este error porque hizo sangría, pero utilizó pestañas y espacios. En un programa de Python, debe usar pestañas o espacios, pero nunca ambos en los mismos archivos.
E.G:
if (age > 18)
{
printf("You can vote")
}
se convierte en:
if age > 18:
print("You can vote")
En la mayoría de los idiomas, se puede hacer:
if (age > 18)
{
printf("You can vote")
}
En Python no se puede:
if age > 18:
print("You can vote")
lanza una excepción . Lo que es más, debe alinear toda la instrucción del mismo bloque, por lo que:
if age > 18:
print("You can vote")
print("How cool is that ?")
está bien, pero:
if age > 18:
print("You can vote")
print("How cool is that ?")
lanza una excepción.
Eventualmente, no puede mezclar tabuladores y espacios en el mismo bloque. Por lo tanto:
if age > 18:
print("You can vote")
print("How cool is that ?")
se ve bien, pero la voluntad lanza una excepción. Para evitar este problema, simplemente adhiérase a pestañas o espacios. El PEP8, el texto que más se usa como referencia para el estilo de codificación, recomienda usar 4 espacios.
La mayoría de los editores tienen una función global de "búsqueda y reemplazo" que le permite solucionar cualquier problema que pueda tener con eso. Algunos como Geany o Ulipad incluso tienen la función "reemplazar todas las pestañas con espacios".
Con este tipo de pregunta es muy importante incluir el código que le da el error. –
"cómo lidiar con este error": proporcionar código. –
Lo siento Señor, era simplemente un recién llegado a stackoverflow.com .. acaba de unirse ayer por primera vez, eso no es una excusa, aunque estoy de acuerdo, debería haber sido más específico e ilustrativo con mi consulta seguramente lo hará en el futuro. La línea específica donde estoy experimentando este error se da a continuación: - para ch in f: (translatedToken = english_hindi_dict [ch]) if (ch en english_hindi_dict) else (translatedToken = ch) El error es como: - lse (translatedToken = ch)^IndentationError: esperado un bloque sangrado - – boddhisattva