0

Pythonを使用してフォーマットしたいスペイン語のドキュメントがあります。問題は、出力ファイルで、アクセント付きの文字が次のように混乱していることです:\ xc3\xad。しばらく前に似たような編集をしたところ、適切なキャラクターを維持することに成功しました。それ以降、すべてを試しましたが、今回はどういうわけかうまくいきません。これはコードの現在のバージョンです:

# -*- coding: utf-8 -*- 

import re
import pickle

inputfile = open("input.txt").read()

pat = re.compile(r"(@.*\*)")

mylist = pat.findall(inputfile)

outputfile = open("output.txt", "w")

pickle.dump(mylist, outputfile)

outputfile.close()

私はWindows7でPython2.7を使用しています。誰かが明らかな問題を見ることができますか?inputfileはutf-8でエンコードされていますが、私もlatin-1でエンコードしてみました。ありがとう。

明確にするために:私の問題は、ラテン文字が出力に正しく表示されないことです。これで解決しました。mataが提案したように、この行を追加する必要がありました。

inputfile = inputfile.decode('utf-8')
4

1 に答える 1

2

入力ファイルが でエンコードされている場合は、最初にutf-8それを操作する必要があります。decode

import re
import pickle

inputfile = open("input.txt").read()
inputfile = inputfile.decode('utf-8')

pat = re.compile(r"(@.*\*)")

mylist = pat.findall(inputfile)

outputfile = open("output.txt", "w")

pickle.dump(mylist, outputfile)

outputfile.close()

そのように作成されたファイルには、あなたのリストのピクルバージョンが含まれます。人間が読めるファイルが必要な場合は、プレーンファイルを使用することをお勧めします。
また、さまざまなエンコーディングを処理する良い方法は、codecsモジュールを使用することです:

import re
import codecs

with codecs.open("input.txt", "r", "utf-8") as infile:
    inp = infile.read()

pat = re.compile(r"(@.*\*)")
mylist = pat.findall(inp)

with codecs.open("output.txt", "w", "utf-8") as outfile:
     outfile.write("\n".join(mylist))
于 2012-05-10T18:53:37.143 に答える