已解决UnicodeEncodeError: el códec 'utf-8' no puede codificar caracteres en la posición 42-43: no se permiten sustitutos

已解决UnicodeEncodeError: el códec 'utf-8' no puede codificar caracteres en la posición 42-43: no se permiten sustitutos










código de error



Debe ser python para escribir el archivo de diccionario de sinónimos en txt, y el código de escritura es el siguiente:

# 保存结果
with open(out_path, 'w', encoding='utf8') as f:
     f.writelines([word + '\t' + file_name + '\n' for count, py, word, file_name in GTable])

Captura de pantalla del mensaje de error :


inserte la descripción de la imagen aquí

词库名: LOL
词库类型: 角色扮演
描述信息: 666
词库示例: 大龙走起不要怂就是干 小龙叫了你们看着办吧 中单撸起 辅助走你 中团啦 中单速度推塔 
Traceback (most recent call last):
  File "E:/Python/test3.py", line 139, in <module>
    f.writelines([word + '\t' + file_name + '\n' for count, py, word, file_name in GTable])
UnicodeEncodeError: 'utf-8' codec can't encode characters in position 42-43: surrogates not allowed



traducción de errores



Traducción del mensaje de error :

Error de codificación Unicode: el códec 'utf-8' no puede codificar caracteres en las posiciones 42-43: no se permiten sustitutos




Motivo del error



Motivo del error :

Algunas cadenas no se pueden decodificar con utf-8, por lo que el carácter "ignorar" que no se puede convertir al formato utf-8 se puede eliminar y luego decodificar.




Solución



Si encuentra este tipo de error, agregue el siguiente código después de la cadena:

.encode('UTF-8', 'ignore').decode('UTF-8')

Modifique el código de escritura a:
# 保存结果
with open(out_path, 'w', encoding='utf-8') as f:
    try:
        f.writelines([word + '\t' + file_name + '\n' for count, py, word, file_name in GTable])
    except:
        f.writelines([word.encode('UTF-8', 'ignore').decode('UTF-8') + '\t' + file_name.encode('UTF-8', 'ignore').decode('UTF-8') + '\n' for count, py, word, file_name in GTable])

Escribe de nuevo y es un éxito!

Supongo que te gusta

Origin blog.csdn.net/yuan2019035055/article/details/126581860
Recomendado
Clasificación