私は大きな(約1ギガバイトの)フラットファイルデータベースをデコードしています。これは、文字エンコードを無制限に混在させています。 Pythonモジュールchardet
は、エンコーディングを特定するの、これまでのところ、良い仕事をしているが、つまずきをヒットした場合...明らかにBig5で間違っています
In [428]: badish[-3]
Out[428]: '\t\t\t"Kuzey r\xfczgari" (2007) {(#1.2)} [Kaz\xc4\xb1m]\n'
In [429]: chardet.detect(badish[-3])
Out[429]: {'confidence': 0.98999999999999999, 'encoding': 'Big5'}
In [430]: unicode(badish[-3], 'Big5')
---------------------------------------------------------------------------
UnicodeDecodeError Traceback (most recent call last)
~/src/imdb/<ipython console> in <module>()
UnicodeDecodeError: 'big5' codec can't decode bytes in position 11-12: illegal multibyte sequence
chardetはそれで非常に高い信頼性がエンコードの選択だ報告しますが、それはdoesnの他の賢明なアプローチはありますか?
ちょうど引用部分の検出を試みる少しのハッキングは、非常に低い信頼度で、実際には行全体を解読するエンコーディング(ISO-8859-2である)を返します。私はデータベース全体に適用できる一般化を探しています。 – SingleNegationElimination