Précautions lors de l'ouverture d'un encodage autre que CP932 (Shift-JIS) sous Windows

introduction

Je suis actuellement un débutant en apprentissage automatique. En copiant le code de l'ancêtre avec kaggle, je vais résumer l'erreur survenue lors de l'apprentissage de la méthode et de la solution en guise de rappel.

En résumé, Windows essaiera de convertir en CP932 par défaut. Cependant, s'il ne peut pas être converti en CP932, une exception UnicodeEncodeError se produira, nous avons donc résumé les contre-mesures.

URL de référence https://qiita.com/Yuu94/items/9ffdfcb2c26d6b33792e

https://qiita.com/butada/items/33db39ced989c2ebf644

environnement

Windows 10 Home Python 3.7.4.

Problèmes et solutions


embedding_dict={}
with open('xxxxx.txt','r') as f: 
    for line in f:
        values=line.split()
        word = values[0]
        vectors=np.asarray(values[1:],'float32')
        embedding_dict[word]=vectors
f.close()

UnicodeDecodeError: 'cp932' codec can't decode byte 0x93 in position 5456: illegal multibyte sequence

Sortit de. Cela signifie que si vous utilisez un environnement Windows, la valeur par défaut est codée avec cp932. Dans ce cas, vous obtiendrez une erreur s'il contient du code qui ne peut pas être converti. Le code spécifique est inconnu cette fois, mais il semble que ce soit parce que le code de la personne étrangère est copié par kaggle.

Par conséquent, ajoutez une description au programme afin qu'il soit codé en UTF-8.


embedding_dict={}
with open('xxxxx.txt','r',encoding="utf-8") as f:
    for line in f:
        values=line.split()
        word = values[0]
        vectors=np.asarray(values[1:],'float32')
        embedding_dict[word]=vectors
f.close()

Ajoutez simplement encoding = "utf-8", mais c'est la solution.

J'ai appris que l'erreur elle-même est un problème spécifique à Windows et comment elle a été codée.

Recommended Posts

Précautions lors de l'ouverture d'un encodage autre que CP932 (Shift-JIS) sous Windows
Python recherche Erreur: encodage inconnu: cp65001 sous Windows
[Windows] Le problème qu'une erreur survient lors de l'ouverture d'un fichier autre que CP932 (Shift-JIS) encodé en Python a été résolu pour le moment.