あなたはではありませんそのような各データを手動でエンコードするのは大変です!あなたが作ったファイルは、あなたがそれを言うことがわかります、あなたならば今
#!/usr/bin/env python3.2
slist = [
"Ca\N{LATIN SMALL LETTER N WITH TILDE}on City",
"na\N{LATIN SMALL LETTER I WITH DIAERESIS}vet\N{LATIN SMALL LETTER E WITH ACUTE}",
"fa\N{LATIN SMALL LETTER C WITH CEDILLA}ade",
"\N{GREEK SMALL LETTER BETA}-globulin"
]
with open("/tmp/sample.utf8", mode="w", encoding="utf8") as f:
for s in slist:
print(s, file=f)
を:単純にこのように、open
に引数としてエンコーディングを渡し
$ cat /tmp/sample.utf8
Cañon City
naïveté
façade
β-globulin
そして、あなたはそれらがあることがわかります正しいコードポイントは次のようになります。
$ uniquote -x /tmp/sample.utf
Ca\x{F1}on City
na\x{EF}vet\x{E9}
fa\x{E7}ade
\x{3B2}-globulin
どれくらい簡単ですか。ストリームオブジェクトがあなたのために低レベルのエンコーディングまたはデコードを処理できるようにします。
概要:あなたがやっているすべては、同じエンコーディングで、それがすべてだ均質なストリームを処理するためにそれらを使用している場合がencode
かdecode
自分自身を呼び出さないでください。それはゼロ利得のためにあまりにも多くの気になります。 encoding
引数を1回だけ使用してください。
この答えを受け入れることを選んだのは、Pythonの初心者で、2つの有効なオプションがあることを理解するためでした。** text **ファイルを使って作業しています。この場合、 'open () ''ファイル、または**バイナリ**ファイル(これは以前のものと非常に似ていますが(しかし、改行を扱うのにはいくつかの困難を引き起こしますが、私はそれらを扱う余裕があると思います)あまりにも)。今度は、** text **( 'str')と(binary)** data **(' bytes')を区別するPython 3.xの方法を知り、感謝しています。 – Tom