フォルダーにかなりの数のファイルを保持しています。今は全部読みたい。それらは異なる形式であり、異なるエンコーディングです。を使用しlistdir/glob.glob
てリストを見つけることができますがopen/read
、異なるエンコーディング用にそれらを処理する方法は?
誰かが私を助けることができれば.私はWindowsでPython3.2を使用しています.
よろしく、Subhabrata Banerjee。
フォルダーにかなりの数のファイルを保持しています。今は全部読みたい。それらは異なる形式であり、異なるエンコーディングです。を使用しlistdir/glob.glob
てリストを見つけることができますがopen/read
、異なるエンコーディング用にそれらを処理する方法は?
誰かが私を助けることができれば.私はWindowsでPython3.2を使用しています.
よろしく、Subhabrata Banerjee。
どのファイルがどのエンコーディングであるかがわかっていると仮定して、codecs.open()を使用します。これは通常の open() とほとんど同じように機能しますが、オプションのエンコーディング パラメータを使用します。
どのファイルがどのエンコーディングにあるのかわからない場合は、さらに困難になります。chardetのようなものや、この質問に対する他の回答を試すことができます
open(fp)
Python でファイルを開く標準的な方法です。http://docs.python.org/library/functions.html#openを参照してください。
開いたら、 http://docs.python.org/library/stdtypes.html#bltin-file-objects.read()
で指定されているようにファイルを読み取ることができます
エンコーディングはよりトリッキーになり、各ファイルに使用されているエンコーディングをどのように知っているかに基づいています
Jeremiahが(のために)書いたようcodecs.open()
に、Python 2に対してopen()
は、ModernizedがPython 3に対して行うencoding
ことを行います。引数は、ファイル内で使用されるエンコーディングを示します。
ただし、重要な違いは、codecs.open()
を使用する場合、読み取り行はユニコード文字列であり(書き込み行はユニコード文字列であると予想されます)、単純な古い文字列(つまり、バイトのシーケンス)ではないことです。Python 3の方が自然な感じですが、Python2でもこのように行うことができます。
MarkPilgrimのDiveIntoPython 3、第4章を読むことをお勧めします。文字列。
彼の第15章ケーススタディ:chardetをPython 3に移植chardet
すると、前述のモジュールがどのように機能するかが説明されます。