lenguaje - python tutorial
¿Cómo me deshago de la "u" de un objeto JSON descodificado? (3)
¿Por qué te preocupas por los personajes ''u''? Son solo un indicador visual; a menos que esté usando el resultado de str(temp)
en su código, no tienen ningún efecto en su código. Por ejemplo:
>>> test = u"abcd"
>>> test == "abcd"
True
Si es importante por alguna razón, y no le importan las consecuencias como no poder usar este código en una configuración internacional, entonces puede pasar un objeto personalizado (ver la documentación de json aquí) para producir diccionarios con contenido de cadenas. en lugar de unicode.
Tengo un diccionario de diccionarios en Python:
d = {"a11y_firesafety.html":{"lang:hi": {"div1": "http://a11y.in/a11y/idea/a11y_firesafety.html:hi"}, "lang:kn": {"div1": "http://a11y.in/a11ypi/idea/a11y_firesafety.html:kn}}}
Tengo esto en un archivo JSON y lo codifiqué usando json.dumps()
. Ahora cuando lo decodifiqué usando json.loads()
en Python obtengo un resultado como este:
temp = {u''a11y_firesafety.html'': {u''lang:hi'': {u''div1'': u''http://a11y.in/a11ypi/idea/a11y_firesafety.html:hi''}, u''lang:kn'': {u''div1'': u''http://a11y.in/a11ypi/idea/a11y_firesafety.html:kn''}}}
Mi problema es con la "u" que significa la codificación Unicode delante de cada elemento en mi temp (diccionario de diccionarios). ¿Cómo deshacerse de esa "u"?
No hay codificación "Unicode", ya que Unicode es un tipo de datos diferente y realmente no veo ningún motivo por el que Unicode sea un problema, ya que siempre se puede convertir a una cadena haciendo, por ejemplo, foo.encode(''utf-8'')
.
Sin embargo, si realmente desea tener objetos de cadena por adelantado, probablemente debería crear su propia clase de decodificador y usarla mientras descodifica JSON.
También puedes usar esto:
import fileinput
fout = open("out.txt", ''a'')
for i in fileinput.input("in.txt"):
str = i.replace("u/"","/"").replace("u/'","/'")
print >> fout,str
Las respuestas json típicas de los sitios web estándar tienen estas dos representaciones de codificación: u ''y u "Este fragmento de código elimina ambas. Puede que no sea necesario ya que esta codificación no dificulta ningún procesamiento lógico, como lo mencionó el comentarista anterior.