ElementTreeでダメなsjisファイルを読む方法
以前からsjisのダメな文字('\'を含む文字、表能ソなど)を含むxmlファイルがpythonのElementTreeで読めなくて困っていました。いろいろ試してみて解法が見つかったのでメモしておきます。
<?xml version="1.0" encoding="shift_jis"?> <root> <data>表能ソ</data> </root>
import os import sys import xml.etree.ElementTree as et # ファイルを読み込む data = open('hoge.xml').read() # unicode化 data = unicode(data, 'cp932') # エンコーディングをutf8に変更 data = data.replace('encoding="shift_jis"', 'encoding="utf-8"') data = data.encode('utf-8') # xml読み込み xml = et.fromstring(data)
最初et.fromstring()にそのままunicodeを渡せばいんじゃね?って思ったんですがうまくいかず。unicodeではなくstr形式のutf-8にして渡せば万事okみたいです。
こんな簡単だったとは!