2011-04-16 20 views
2

pdftotextを使用してpdfから作成されたテキストファイルからPythonを使用してテキストを抽出しています。それは2000のファイルの1つであり、この特定のものでは、キーワードの行はEUで終わります。ラインの残りの部分は肉眼では空白なので、次のようになります。PDFtotext - コマンドラインでaacuteとして表示される空白

プログラムでは、通常、行末の末尾の空白を取り除き、その後の空白行は無視します。

この例では、テキストファイルで「EU」と同様にhtml(Simile Exhibit)の間に印刷されるときに表示される空白を保存しています。

コマンドラインにも印刷されていますが、ここにはaacuteという文字列があります。 [?]

これに対処する明白な方法は、accuteを検索して置き換えることだと思いました。私はコンパイルステートメントでこれを実行しようとしましたが、入力テキストをデコードする順列で演奏しました。

奇妙なことに、私が「\ 255」を印刷すると、私は急なアクシデントを取得しません、私はoの墓を取得します。

このような奇妙な組み合わせで、私は何か基本的なことを誤解しているようです。これを解明する方法のヒント?

多くのありがとうございます。

答えて

0

最初のヒントは、様々な無言のエンコーディングを使用して、すべての可能な出力メカニズムに荒々しく印刷されません。あなたが持っているものを正確に見つけてください。これを行う:

print repr(the_line_with_the_problem) # Python 2.x 
print(ascii(the_line_with_the_problem)) # Python 3.x 

あなたの質問を編集し、結果をコピー/貼り付けます。

第2の先端:助けを求める場合には、お使いの環境についての情報を与える:パイソンの

どのバージョンを?どのオペレーティングシステムのどのバージョンですか?

ロケール関連の情報も表示します。次の例は、Windows 7のコマンドプロンプトウィンドウでのPython 2.7を実行している私のコンピュータからです::

>>> import sys, locale 
>>> sys.getdefaultencoding() 
'ascii' 
>>> sys.stdout.encoding 
'cp850' 
>>> locale.getdefaultlocale() 
('en_AU', 'cp1252') 
>>> 

第三ヒント:自分の専門用語を使用しないでください...コマンドに印刷された概念「比喩展」、」 line "、" compile statement "が必要です。

"\255"の関連性は何ですか?あなたはどこからそれを手に入れましたか?いくつかの事実が出てくるのを待っている間

ワイルドを推測:

(1)問題の文字はU + 00A0 NO-BREAK空間が"\xA0"としてあなたのテキストで表示され、中に標準出力に送られたときに別名NBSPですコマンドプロンプトウィンドウを使用しているWindows上の西ヨーロッパのロケールは、cp850でエンコードされているものとして扱われるため、「急性」として表示されます。どのようにこれがo-graveに変身するのかは謎です。

(2)"\255" == \xADは、問題の文字がU + 00AD SOFT HYPHENであることを示していますが、なぜこれがo-graveと見なされるのかは謎であり、「空白」ではありません。それは全く表示すべきではなく、スペースではなくハイフン/マイナス記号でなければならないことが示されています。

+0

ありがとうございます。あなたは私の問題を分類した。私は "\ xA0"の検索語をコンパイルして、問題のNBSPを削除することができます。そして、私たちは送信せずにここで改行を使うことはできないようです。これは不快です!また、問題のあるコードを表示する方法を学び、Commmand Promptウィンドウの出力をテキストファイルとv.v.にリダイレクトするときにエンコードが変更されることを学びました。どうもありがとう。 – jobucks

+0

@ jobucks:事実はどこですか? "検索用語を集めた"とは何ですか? re.compile()?? msgstr "ここで改行を送信することはできません"説明してください。また、 "\ 255"とo-graveについては何がありましたか? –

関連する問題