escape - python open encoding
UnicodeEncodeError: el códec ''ascii'' no puede codificar el carácter u ''/ xe9'' en la posición 7: ordinal no está dentro del rango(128) (1)
Esta pregunta ya tiene una respuesta aquí:
Tengo este código:
printinfo = title + "/t" + old_vendor_id + "/t" + apple_id + ''/n''
# Write file
f.write (printinfo + ''/n'')
Pero me sale este error al ejecutarlo:
f.write(printinfo + ''/n'')
UnicodeEncodeError: ''ascii'' codec can''t encode character u''/xe9'' in position 7: ordinal not in range(128)
Es tener toruble escribiendo esto:
Identité secrète (Abduction) [VF]
Cualquier idea, por favor, no estoy seguro de cómo solucionarlo.
Aclamaciones.
ACTUALIZACIÓN: Esta es la mayor parte de mi código, para que pueda ver lo que estoy haciendo:
def runLookupEdit(self, event):
newpath1 = pathindir + "/"
errorFileOut = newpath1 + "REPORT.csv"
f = open(errorFileOut, ''w'')
global old_vendor_id
for old_vendor_id in vendorIdsIn.splitlines():
writeErrorFile = 0
from lxml import etree
parser = etree.XMLParser(remove_blank_text=True) # makes pretty print work
path1 = os.path.join(pathindir, old_vendor_id)
path2 = path1 + ".itmsp"
path3 = os.path.join(path2, ''metadata.xml'')
# Open and parse the xml file
cantFindError = 0
try:
with open(path3): pass
except IOError:
cantFindError = 1
errorMessage = old_vendor_id
self.Error(errorMessage)
break
tree = etree.parse(path3, parser)
root = tree.getroot()
for element in tree.xpath(''//video/title''):
title = element.text
while ''/n'' in title:
title= title.replace(''/n'', '' '')
while ''/t'' in title:
title = title.replace(''/t'', '' '')
while '' '' in title:
title = title.replace('' '', '' '')
title = title.strip()
element.text = title
print title
#########################################
######## REMOVE UNWANTED TAGS ########
#########################################
# Remove the comment tags
comments = tree.xpath(''//comment()'')
q = 1
for c in comments:
p = c.getparent()
if q == 3:
apple_id = c.text
p.remove(c)
q = q+1
apple_id = apple_id.split('':'',1)[1]
apple_id = apple_id.strip()
printinfo = title + "/t" + old_vendor_id + "/t" + apple_id
# Write file
# f.write (printinfo + ''/n'')
f.write(printinfo.encode(''utf8'') + ''/n'')
f.close()
Debe codificar Unicode explícitamente antes de escribir en un archivo, de lo contrario, Python lo hace por usted con el códec ASCII predeterminado.
Elija una codificación y quédese con ella:
f.write(printinfo.encode(''utf8'') + ''/n'')
o use io.open()
para crear un objeto de archivo que codificará para usted mientras escribe en el archivo:
import io
f = io.open(filename, ''w'', encoding=''utf8'')
Es posible que desee leer:
Pragmático Unicode por Ned Batchelder
El mínimo absoluto, cada desarrollador de software Absolutamente, positivamente debe saber sobre Unicode y juegos de caracteres (¡Sin excusas!) Por Joel Spolsky
Antes de continuar.