pythonでsjisファイルutf8に変換しようとして
- Sun
- 00:24
- python
pythonでsjisファイル(csv)をutf8変換しようとして迷った時のメモ。
openする時に、encodingを指定すれば開けるのですが、例えばこんな感じ
で、エラーが出る場合は、別のコードを指定。
ただし、これでもエラーになる場合がある。で結局、iconvでutf8に変換してからpythonで開くとうまくいった。
みたいな感じで。nkfやdos2unixよりもiconvの方が変換できる文字が多いようで。
また、変換できないときの挙動も異常終了したりしないでの、iconvがお勧め。
これらのツールで、改行コードの変換もできるが、末尾の変換だけで、マルチラインカラム(1つのフィールドに改行コードが入ってるもの)の改行コードは変換してくれない。
なので、iconvで変換後、pythonのcsv.readerなどで読み込んでフィールド内の改行コードなどを削除。
openする時に、encodingを指定すれば開けるのですが、例えばこんな感じ
fin = open('sjis_file.txt', mode='r', encoding='shift_jis')
で、エラーが出る場合は、別のコードを指定。
fin = open('sjis_file.txt', mode='r', encoding='shift_jisx0213')とか。
ただし、これでもエラーになる場合がある。で結局、iconvでutf8に変換してからpythonで開くとうまくいった。
#!/bin/bash iconv -c -f SJIS -t UTF-8 sjis_file.txt > utf8_file.txt python read_file.py
みたいな感じで。nkfやdos2unixよりもiconvの方が変換できる文字が多いようで。
また、変換できないときの挙動も異常終了したりしないでの、iconvがお勧め。
これらのツールで、改行コードの変換もできるが、末尾の変換だけで、マルチラインカラム(1つのフィールドに改行コードが入ってるもの)の改行コードは変換してくれない。
なので、iconvで変換後、pythonのcsv.readerなどで読み込んでフィールド内の改行コードなどを削除。
- 関連記事
-
- Jupyter notebook on VSCodeでAthenaに接続
- Emacs 27.1のelpy設定
- pythonでsjisファイルutf8に変換しようとして
- emacsでpython、事始
- pythonのConfigParserによる設定ファイルの入力
Comment
Trackback
- URL
- https://nosource.blog.fc2.com/tb.php/183-e73ac7db
- この記事にトラックバック(FC2Blog User)