str open escape python unicode utf-8 ascii

open - Python: UnicodeDecodeError: el códec ''ascii'' no puede decodificar el byte 0xef en la posición 0: el ordinal no está dentro del rango(128)



unicode to ascii python (3)

Cambie su función a:

def replace_line(file_name, line_num, text): with open(file_name, ''r'', encoding=''utf8'') as f: lines = f.readlines() lines[line_num] = text with open(file_name, ''w'', encoding=''utf8'') as out: out.writelines(lines)

encoding=''utf8'' decodificará correctamente su archivo UTF-8.

cierra automáticamente el archivo cuando se cierra su bloque.

Como el archivo comenzó con /xef es probable que tenga un carácter de marca de byte (BOM) de codificación UTF-8 al principio. El código anterior lo mantendrá en la salida, pero si no lo desea, use utf-8-sig para la codificación de entrada . Entonces será eliminado automáticamente.

Actualmente tengo un problema con mi código python 3.

replace_line(''Products.txt'', line, tenminus_str)

Es la línea que trato de convertir en utf-8, sin embargo, cuando trato de hacer esto como lo haría con otros, obtengo errores como los de atributo y cuando intento agregar, por ejemplo ...

.decode("utf8")

... hasta el final, sigo recibiendo errores porque está usando ascii. También probé otros métodos que funcionaban con otras líneas, como agregar io. enfrente y agregando una coma con

encoding = ''utf8''

La función que estoy usando para replace_line es:

def replace_line(file_name, line_num, text): lines = open(file_name, ''r'').readlines() lines[line_num] = text out = open(file_name, ''w'') out.writelines(lines) out.close()

¿Cómo puedo solucionar este problema? Tenga en cuenta que soy muy nuevo en Python y no lo suficientemente avanzado como para hacer bien la depuración.

EDITAR: Diferente solución a esta pregunta que ''duplicar''

EDIT 2: Tengo otro error con la función ahora.

File "FILELOCATION", line 45, in refill replace_line(''Products.txt'', str(line), tenminus_str) File "FILELOCATION", line 6, in replace_line lines[line_num] = text TypeError: list indices must be integers, not str

¿Qué significa esto y cómo lo soluciono?


Manejo de problemas de codificación Puede intentar agregar las siguientes configuraciones a su cabeza

import sys reload(sys) sys.setdefaultencoding(''utf-8'') Type = sys.getfilesystemencoding()


codecs module es justo lo que necesitas. detalle aquí

import codecs def replace_line(file_name, line_num, text): f = codecs.open(file_name, ''r'', encoding=''utf-8'') lines = f.readlines() lines[line_num] = text f.close() w = codecs.open(file_name, ''w'', encoding=''utf-8'') w.writelines(lines) w.close()