2

pdftotextを使用してpdfから作成されたテキストファイルからpythonを使用してテキストを抽出しています。これは 2000 個のファイルのうちの 1 つであり、この特定のファイルでは、キーワードの行が EU で終わっています。行の残りの部分は肉眼では空白であり、次の行も同様です。

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

この例では、「EU.」の間の textfile で、同様に html で印刷したときに表示される空白を保存しています (Simile Exhibit)。

コマンドラインにも出力しましたが、ここに aacute の文字列が表示されます。[?]

これに対処する明白な方法は、accute を検索して置き換えることだと思いました。私はコンパイルステートメントでそれをやろうとしましたが、着信テキストをデコードする順列で遊んだことがあります。

奇妙なことに、"\255" を印刷すると、aacute が表示されず、o Grave が表示されます。

この奇妙なエラーの組み合わせにより、私は何か基本的なことを誤解しているようです。これを解き始める方法のヒントはありますか?

どうもありがとう。

4

1 に答える 1

0

最初のヒントは、さまざまな明示されていないエンコーディングを使用して、可能なすべての出力メカニズムに乱暴に出力しないことです。あなたが持っているものを正確に見つけてください。これを行う:

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

質問を編集し、結果をコピーして貼り付けます。

2 つ目のヒント: 助けを求めるときは、環境に関する情報を提供してください。

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

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

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

3 番目のヒント: 独自の専門用語を使用しないでください。"類似の展示"、"コマンド ラインに出力される"、および "コンパイル ステートメント" という概念については説明が必要です。

の関連性は"\255"何ですか? それはどこから入手したのですか?

いくつかの事実が明らかになるのを待っている間のワイルドな推測:

(1) 問題の文字は U+00A0 NO-BREAK SPACE 別名 NBSP であり"\xA0"、コマンド プロンプト ウィンドウを使用して Windows の西ヨーロッパ ロケールで stdout に送信されるとテキストに表示され、エンコードされているものとして扱われcp850、したがって次のように表示されます。急性。これがどうやってオグレイブに変身できるのかは謎です。

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

于 2011-04-16T23:43:24.987 に答える