[PYTHON] UnicodeDecodeError: Que faire lorsque le codec de 'shift_jis' ne peut pas décoder l'octet

--Environnement --Windows10 Pro version 1909 - Python 3.8.5 - Pandas 1.0.5

Événement: je me suis mis en colère lorsque j'ai lu un fichier CSV avec Pandas

Traceback (most recent call last):
  File "C:/path/to/my_code.py", line 258, in <module>
    csv = read_files(target_dir)
  File "C:/path/to/my_code.py", line 74, in read_files
    data = pd.read_csv(file, encoding="shift_jis")
  File "C:\path\to\venv\lib\site-packages\pandas\io\parsers.py", line 676, in parser_f
    return _read(filepath_or_buffer, kwds)
  File "C:\path\to\venv\lib\site-packages\pandas\io\parsers.py", line 448, in _read
    parser = TextFileReader(fp_or_buf, **kwds)
  File "C:\path\to\venv\lib\site-packages\pandas\io\parsers.py", line 880, in __init__
    self._make_engine(self.engine)
  File "C:\path\to\venv\lib\site-packages\pandas\io\parsers.py", line 1114, in _make_engine
    self._engine = CParserWrapper(self.f, **self.options)
  File "C:\path\to\venv\lib\site-packages\pandas\io\parsers.py", line 1891, in __init__
    self._reader = parsers.TextReader(src, **kwds)
  File "pandas\_libs\parsers.pyx", line 529, in pandas._libs.parsers.TextReader.__cinit__
  File "pandas\_libs\parsers.pyx", line 720, in pandas._libs.parsers.TextReader._get_header
  File "pandas\_libs\parsers.pyx", line 916, in pandas._libs.parsers.TextReader._tokenize_rows
  File "pandas\_libs\parsers.pyx", line 2063, in pandas._libs.parsers.raise_parser_error
UnicodeDecodeError: 'shift_jis' codec can't decode byte 0xee in position 4225: illegal multibyte sequence

my_code.py


data = pd.read_csv(file, encoding="shift_jis")

Cause: le fichier contient des caractères étendus que CP932 n'a pas dans SJIS.

C'est dans test2.csv, ・ Hashigodaka "Taka" ・ Tachisaki "Saki" Cela est dû au fait que les chaînes d'extension Windows telles que> sont mélangées. Points à noter lorsque vous laissez les pandas lire le csv de la sortie Excel --Qiita

Je suis fou alors j'ai essayé la combinaison. *. J'ai essayé d'utiliser "Takasaki" comme caractère étendu.

read_csv
Code de caractère
dossier de
Code de caractère
dossier de
Avec des caractères étendus
dossier de
Aucun caractère étendu
shift_jis shift_jis Erreur OK
shift_jis cp392 Erreur OK
cp932 shift_jis Erreur
éditeur(Sublime Text)alors
Si vous mettez des caractères étendus et enregistrez
保存はalorsきるけど警告が出る。
Vous devriez remarquer que c'est étrange ...
OK
cp932 cp932 OK OK

shift avec cp932_Erreur lors de la lecture d'un fichier avec des caractères étendus avec jis


# ...réduction...
UnicodeDecodeError: 'cp932' codec can't decode byte 0x86 in position 5: illegal multibyte sequence

Si vous utilisez un fichier avec le japonais sous Windows, il est préférable de le définir sur cp932. J'ai également étudié le CP932 et le SJIS.

Action: Lisez le fichier avec CP932

my_code.py


data = pd.read_csv(file, encoding="cp932")

Recommended Posts

UnicodeDecodeError: Que faire lorsque le codec de 'shift_jis' ne peut pas décoder l'octet
Mecab --UnicodeDecodeError: le codec 'utf8' ne peut pas décoder l'octet
Lorsque le codec ne peut pas décoder l'octet apparaît en python
Que faire si pipreqs aboutit à UnicodeDecodeError
Que faire lorsque le shell pipenv devient impossible
Que faire si vous ne pouvez pas installer mysqlclient
Que faire si une erreur de décodage Unicode se produit dans pip
Que faire si vous ne pouvez pas trier les fichiers avec des indices
Que faire si vous ne pouvez pas vous connecter en tant que root
Que faire si vous ne pouvez pas utiliser le WiFi sous Linux
Que faire quand Ubuntu plante
Que faire si yum casse
Que faire avec l'installation de Magics
Que faire si vous ne pouvez pas installer pyaudio avec pip #Python
Que faire si vous obtenez une erreur de décodage Unicode avec l'installation de pip
Que faire avec la sortie de PYTHON?
UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xa4 en position 0: ordinal pas dans la plage (128)
Que faire si vous ne pouvez pas construire un projet avec Maven
Que faire si vous ne pouvez pas utiliser la poubelle dans Lubuntu 18.04.
Que faire lorsque vous obtenez "Je ne peux pas voir le site !!!!"
Que faire quand UnicodeDecodeError se produit pendant read_csv dans pandas (pd.read_table ())
Que faire si l'option -f de grep ne fonctionne pas
Que faire si PDO n'est pas trouvé dans Laravel ou CakePHP
Que faire si vous ne pouvez pas utiliser la recherche de grille de sklearn en Python
Que faire si vous ne pouvez pas installer avec pip dans l'environnement babun
Que faire après l'installation de Linux (Ubuntu)
Résumons ce que vous voulez faire.
Solution lorsque Django ne peut pas charger d'images à partir d'un dossier statique
Ce que SinGAN ne peut pas faire dans le meilleur article de l'ICCV2019 [Pratique]
[Python] Ce que j'ai fait pour faire un test unitaire
Éviter «le codec 'ascii' ne peut pas décoder» avec pip install
Que faire si mod_fcgid ne peut pas résoudre UnicodeEncodeError
[Pour les débutants] Que faire après l'installation d'Anaconda
Que faire si les rails ne fonctionnent pas
Que faire si pip ne peut pas être installé
Que faire quand une PermissionError dans tempfile.mkstemp se produit
Que faire si l'autocomplete-python d'atome ne fonctionne pas
Que faire pour obtenir une feuille de calcul Google en Python
Que faire si Docker-sync cesse soudainement de fonctionner
yum lance l'erreur "UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xc3 en position 15: ordinal pas dans la plage (128)"
Comment installer et utiliser pyenv, que faire si vous ne pouvez pas changer de version de Python