Chardetを使用して非常に大きなファイルのエンコーディングを見つける

jbentley

Chardetタブ区切り形式の非常に大きなファイル(> 400万行)のエンコーディングを推測するために使用しようとしています。

現時点では、おそらくファイルのサイズが原因で、スクリプトが問題を抱えています。ファイルの最初のx行をロードするように絞り込みたいのですが、を使おうとすると問題が発生しますreadline()

現状のスクリプトは次のとおりです。

import chardet
import os
filepath = os.path.join(r"O:\Song Pop\01 Originals\2017\FreshPlanet_SongPop_0517.txt")
rawdata = open(filepath, 'rb').readline()


print(rawdata)
result = chardet.detect(rawdata)
print(result)

動作しますが、ファイルの最初の行のみを読み取ります。単純なループを使用してreadline()複数回呼び出すという私の試みは、あまりうまくいきませんでした(おそらく、スクリプトがファイルをバイナリ形式で開いているという事実)。

1行の出力は {'encoding': 'Windows-1252', 'confidence': 0.73, 'language': ''}

読み取る行数を増やすと、エンコードの信頼性が向上するかどうか疑問に思いました。

どんな助けでも大歓迎です。

Lovethenakedgun

私はChardetに特に経験があるわけではありませんが、自分の問題をデバッグしているときにこの投稿に出くわし、答えがないことに驚いていました。これが遅すぎてOPの助けにならない場合は申し訳ありませんが、これに遭遇した他の人にとっては:

ファイルをさらに読み込むことで推測されるエンコードタイプが改善されるかどうかはわかりませんが、テストするために必要なのは次のとおりです。

import chardet
testStr = b''
count = 0
with open('Huge File!', 'rb') as x:
    line = x.readline()
    while line and count < 50:  #Set based on lines you'd want to check
        testStr = testStr + line
        count = count + 1
        line = x.readline()
print(chardet.detect(testStr))

私の例では、複数のエンコード形式があると思われるファイルがあり、「行ごと」にテストするために次のように記述しました。

import chardet
with open('Huge File!', 'rb') as x:
    line = x.readline()
    curChar = chardet.detect(line)
    print(curChar)
    while line:
        if curChar != chardet.detect(line):
            curChar = chardet.detect(line)
            print(curChar)
        line = x.readline()

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

* .txtファイル内の文字列を見つけてPythonを使用してUnicodeエンコーディングに置き換える方法は?

分類Dev

スケーラブルなソリューションを使用して、Javaの非常に大きなファイルから一意のレコードを見つける方法は?

分類Dev

chardetを使用してファイルのエンコーディングを推測しようとしています

分類Dev

Javaで非常に大きなファイルのコピーステータスを見つける方法

分類Dev

スペースを削除して解放するために大きなファイル/ディレクトリを見つけるコマンドラインの方法は何ですか?

分類Dev

Linuxでスクリプトを介してファイルのエンコーディングを見つける方法は?

分類Dev

テキストファイルのエンコーディングを見つける

分類Dev

別のディレクトリにある.srtファイルを見つけて、文字エンコードを変更します

分類Dev

2つのディレクトリツリーがある場合、どのファイルがコンテンツによって異なるかをどのようにして見つけることができますか?

分類Dev

beautifulsoupを使用するときに正しいエンコーディングを見つける方法は?

分類Dev

Haxeでsys.io.File.readを使用してファイルを読み取るときにファイルエンコーディングを指定する

分類Dev

デフォルトのエンコーディングを使用するコードを見つけるためにどのエンコーディングを使用しますか?

分類Dev

大きなサイズのファイルでコンテンツを見つける方法

分類Dev

スライスを使用してドメインの非常に大きなリストをフィルタリングする

分類Dev

2つのドライブ間の拡張子によってフィルタリングされ、各ファイルパスを保持する大きなサイズのファイルを堅牢にコピーしますか?

分類Dev

ElasticSearch-JavaAPIを使用して大きなファイルにインデックスを付ける

分類Dev

コマンドラインを使用して日付の大きなデータセットをフィルタリングする

分類Dev

特定の文字エンコーディングを使用してJavaでファイルを読み取る方法は?

分類Dev

そのコンテンツを使用するために大きなISOファイルをいくつかのディスクに書き込む方法は?

分類Dev

webpackバンドルファイルエラーをデバッグして、千の番号で構成されるバンドル内の正確なエラーを見つけるにはどうすればよいですか?reactJsの行の

分類Dev

グーグル翻訳は私のファイルのコーディングを見逃している

分類Dev

Path.GetInvalidPathCharsを使用して、より大きな文字列内のファイル名を見つける方法は?

分類Dev

動的データを使用して非常に大きなJSONファイルを解析する

分類Dev

バックスラッシュを使用した非常に大きなJSONファイルの解析(JSONエンコード)

分類Dev

ワンホットエンコーディングを大きなファイルに適用するにはどうすればよいですか?

分類Dev

C ++ 11を使用して、コンパイル時にプログラムでエンディアンを見つける

分類Dev

複雑なCPANディストリビューションをデバッグするときに、サブルーチン呼び出しのソースファイルを見つける方法は?

分類Dev

同じファイルシステムで異なるエンコーディングを使用してファイル名をエンコードできますか(Linuxの場合)

分類Dev

JDBCを使用してpostgresデータベースからファイルシステムに大きなファイルをストリーミングする

Related 関連記事

  1. 1

    * .txtファイル内の文字列を見つけてPythonを使用してUnicodeエンコーディングに置き換える方法は?

  2. 2

    スケーラブルなソリューションを使用して、Javaの非常に大きなファイルから一意のレコードを見つける方法は?

  3. 3

    chardetを使用してファイルのエンコーディングを推測しようとしています

  4. 4

    Javaで非常に大きなファイルのコピーステータスを見つける方法

  5. 5

    スペースを削除して解放するために大きなファイル/ディレクトリを見つけるコマンドラインの方法は何ですか?

  6. 6

    Linuxでスクリプトを介してファイルのエンコーディングを見つける方法は?

  7. 7

    テキストファイルのエンコーディングを見つける

  8. 8

    別のディレクトリにある.srtファイルを見つけて、文字エンコードを変更します

  9. 9

    2つのディレクトリツリーがある場合、どのファイルがコンテンツによって異なるかをどのようにして見つけることができますか?

  10. 10

    beautifulsoupを使用するときに正しいエンコーディングを見つける方法は?

  11. 11

    Haxeでsys.io.File.readを使用してファイルを読み取るときにファイルエンコーディングを指定する

  12. 12

    デフォルトのエンコーディングを使用するコードを見つけるためにどのエンコーディングを使用しますか?

  13. 13

    大きなサイズのファイルでコンテンツを見つける方法

  14. 14

    スライスを使用してドメインの非常に大きなリストをフィルタリングする

  15. 15

    2つのドライブ間の拡張子によってフィルタリングされ、各ファイルパスを保持する大きなサイズのファイルを堅牢にコピーしますか?

  16. 16

    ElasticSearch-JavaAPIを使用して大きなファイルにインデックスを付ける

  17. 17

    コマンドラインを使用して日付の大きなデータセットをフィルタリングする

  18. 18

    特定の文字エンコーディングを使用してJavaでファイルを読み取る方法は?

  19. 19

    そのコンテンツを使用するために大きなISOファイルをいくつかのディスクに書き込む方法は?

  20. 20

    webpackバンドルファイルエラーをデバッグして、千の番号で構成されるバンドル内の正確なエラーを見つけるにはどうすればよいですか?reactJsの行の

  21. 21

    グーグル翻訳は私のファイルのコーディングを見逃している

  22. 22

    Path.GetInvalidPathCharsを使用して、より大きな文字列内のファイル名を見つける方法は?

  23. 23

    動的データを使用して非常に大きなJSONファイルを解析する

  24. 24

    バックスラッシュを使用した非常に大きなJSONファイルの解析(JSONエンコード)

  25. 25

    ワンホットエンコーディングを大きなファイルに適用するにはどうすればよいですか?

  26. 26

    C ++ 11を使用して、コンパイル時にプログラムでエンディアンを見つける

  27. 27

    複雑なCPANディストリビューションをデバッグするときに、サブルーチン呼び出しのソースファイルを見つける方法は?

  28. 28

    同じファイルシステムで異なるエンコーディングを使用してファイル名をエンコードできますか(Linuxの場合)

  29. 29

    JDBCを使用してpostgresデータベースからファイルシステムに大きなファイルをストリーミングする

ホットタグ

アーカイブ