perdone si esta mucho una pregunta:Python y Unicode: ¿Cómo debería ser todo lo Unicode
he estado programando en Python por alrededor de seis meses. Autodidacta, comenzando con el tutorial de Python y luego SO y luego usando Google para cosas.
Aquí está la parte triste: Nadie me dijo que todas las cadenas deberían ser Unicode. No, no estoy mintiendo ni inventando esto, pero ¿dónde lo menciona el tutorial? Y la mayoría de los ejemplos también veo simplemente hacer uso de byte strings
, en lugar de Unicode strings.
Estaba navegando y encontré esta pregunta en SO, que dice cómo cada cadena en Python debe ser una cadena Unicode. ¡Esto me hizo llorar!
leí que cada cadena en Python 3.0 es Unicode por defecto, así que mis preguntas son para 2.x:
debo hacer una:
print u'Some text'
o simplementeprint 'Text'
?Todo debe estar Unicode, significa esto, al igual que decir que tengo un
tuple
:t = ('First', 'Second'), it should be t = (u'First', u'Second')?
leí que puedo hacer un
from __future__ import unicode_literals
y luego cada cadena será una cadena Unicode, sino que debe Hago esto dentro de un contenedor también?Al leer/escribir en un archivo, debo usar el módulo
codecs
. ¿Derecha? ¿O debería usar el modo estándar o leer/escribir yencode
odecode
cuando sea necesario?Si obtengo la cadena de, por ejemplo,
raw_input()
, ¿debo convertir eso a Unicode también?
¿Cuál es el enfoque común para manejar todos los problemas anteriores en 2.x? ¿La declaración from __future__ import unicode_literals
?
Disculpa por ser una novata, pero esto cambia lo que he estado haciendo durante mucho tiempo y estoy tan confundido.
¿Por qué no utilizar Python 3 y avanzar con los tiempos? –
Casi todas las distribuciones de Linux todavía vienen con 2x. No hay nada de malo en escribir programas 2x. Ahí es donde también está la gran mayoría de las bibliotecas. – Falmarri
Nitpick: 'from __future__ import unicode_literals', plural. –