2009-05-26 8 views
1

私はPythonにはかなり新しくなっていますので、私の質問はばかげているかもしれませんが、たくさんのスレッドを読み込んでも私の質問には答えが見つかりませんでした。Pythonの「生の」Unicode文字列を読む

私は、html、xml、latex、およびその他のtextformatsを含む混合ソース文書を持っています。これはラテックスのみの形式にしようとしています。

したがって、Pythonを使用して、さまざまなコマンドを通常の表現として認識し、適切なlatexコマンドに置き換えました。これまでにすべてがうまくいきました。

今、ギリシャ文字のような「生のタイプ」のUnicode記号が残っています。残念なことに、それは手で行うことだけです。したがって、これをスマートに行う方法を探しています。 Pythonがそれらを認識/読み込む方法はありますか?そして、私はどのようにPythonに認識/読み込みを指示しますか? Piはギリシャ文字で書かれていますか?

私が使用するコードの最低限の例は次のとおりです。

fh = open('SOURCE_DOCUMENT','r') 
stuff = fh.read() 
fh.close() 

new_stuff = re.sub('READ','REPLACE',stuff) 
fh = open('LATEX_DOCUMENT','w') 
fh.write(new_stuff) 
fh.close() 

私はそれが重要な情報であるかどうかわからないが、私はWindows上で実行されているのPython 2.6を使用しています。

誰かが私にヒントを与えることができれば、少なくとも情報に基づいた情報を見つけるか、またはこれがどのように機能するかについて、私は本当にうれしく思います。または、私が完全に間違っているかどうか、そしてPythonはこの仕事をすることができません...

事前に多くのおかげです。
乾杯、
ブリタ

+0

あなたが話している「生のタイプのUnicode記号」の例を挙げてください。世界中の誰もこの言葉を以前に使ったり聞いたりしたことはないと確信しています。 –

+0

「認識する」とはどういう意味ですか? PythonはUnicode文字列を扱うことは可能ですが、あなたはそれらで何をしたいのか、現時点ではうまくいかないのか説明しません。 –

+0

ラテックスがUnicode文字を気に入らないという問題はありますか?もしそうなら、[この質問](http://stackoverflow.com/questions/219853/entering-unicode-characters-in-latex)が役に立ちます。 –

答えて

3

「未処理」のUnicode文字列についてお話しします。どういう意味ですか? Unicode自体はエンコーディングではありませんが、Unicode文字を格納するエンコーディングは異なります(Joelのthis postを読んでください)。

Python 3.0のopen関数では、オプションのencoding引数を使用して、エンコーディングを指定できます。 UTF-8(Unicodeをコード化する非常に一般的な方法) Python 2.xでは、codecsモジュールを見てください。このモジュールには、ファイルのエンコーディングを指定できるopen関数もあります。

編集:代わり、なぜちょうどそれらの貧しい人々の文字があること聞かせて、トップであなたのLaTeXファイルのエンコーディングを指定しない:

\usepackage[utf8]{inputenc} 

(私はこれを試したことがないが、私はそれが動作するはず把握あなたはmayの代わりにをutf8xと置き換える必要があります)

+0

「生の」Unicodeとは、記号がコードでは表現されていないが、記号自体がテキストの中にあるということです。 でWordに挿入します。 例としては、&#x03A0として正しく符号化されていない「大文字pi」のシンボルがあります。 (LaTeXではutf8(x)パッケージを使用して簡単に表示できます)。 ラテックスのシンボルでテキストを開くと、単に表示されず、情報が失われるので、私はそれを処理する必要があります。 しかし、私はコーデックmodulueに関する他のヒントを見ていきます...ありがとう:) –

+0

この場合、入力ドキュメントのエンコーディングを決定する必要があります。ドキュメントがXMLの場合は、最初の行(encoding = "..."; "utf-8"がデフォルト)にあるはずです。 HTMLの場合、 "charset"を探します。 –

0

入力文書の「エンコード」を決定する必要があります。 Unicodeは何百万もの文字をエンコードすることができますが、ファイルは8ビットの値(0-255)しか記述できません。したがって、Unicodeテキストは何らかの方法でエンコードされなければなりません。

ドキュメントがXMLの場合は、最初の行(encoding = "..."; "encoding"フィールドがない場合は "utf-8"がデフォルト)になります。 HTMLの場合、 "charset"を探します。

その他すべてが失敗した場合は、エンコーディングを設定できるエディタでドキュメントを開きます(jEditなど)。テキストが正しく見えるまで試してみてください。次に、この値をPythonのcodecs.open()encodingパラメータとして使用します。

関連する問題