¿Codificando una lista de tuplas con python?

Estoy leyendo de un directorio un archivo de texto utf-8, luego inserto el texto leído en una lista y obtengo algunas tuplas como esta:

l = [('mucho','fácil'),...,('yo','hola')] 

Cuando lo imprimo en la consola tengo lo siguiente:

 print l ('mucho','f\xc3\xa1cil'),...,('yo','hola') 

Así que intenté lo siguiente:

 fixing_l = [x.encode('utf-8') for x in l] 

Cuando bash imprimirlo obtengo esta excepción:

 AttributeError: 'tuple' object has no attribute 'encode' 

¿Cómo puedo codificar y corregir las cadenas y obtener algo como esto ?:

 ('mucho','fácil'),...,('yo','hola') 

Creo que te refieres a decodificar

 l = [('mucho','f\xc3\xa1cil'),...,('yo','hola')] decoded = [[word.decode("utf8") for word in sets] for sets in l] for words in decoded: print u" ".join(words) print 'f\xc3\xa1cil'.decode("utf8") 

Si lo imprimes deberías ver la cadena adecuada.

Ya que inicialmente tiene una cadena de bytes normal, debe decode lo que devuelve una representación unicode del objeto … en el caso anterior, u"\xe1" es realmente "\xc3\xa1" que a su vez es realmente todo solo á

En python3 puedes usar:

 res = [tuple(map(lambda x: x.encode(encoding), tup)) for tup in list_tuples] 

Ejemplo:

 list_tuples = [('mucho','fácil'), ('\u2019', 't')] res = [tuple(map(lambda x: x.encode('utf-8'), tup)) for tup in list_tuples] 

resultado:

 [(b'mucho', b'f\xc3\xa1cil'), (b'\xe2\x80\x99', b't')]