10

stackoverflowにはいくつかのスレッドがありますが、全体として問題の有効な解決策を見つけることができませんでした。

urllib読み取り関数から膨大な量のテキストデータを収集し、それをピクルスファイルに保存しました。

次に、このデータをファイルに書き込みます。書いている間、私は次のようなエラーが発生します-

'ascii' codec can't encode character u'\u2019' in position 16: ordinal not in range(128)

そして、多くのデータが失われています。

読み取りたurllibからのデータはバイトデータだと思います

私はもう試した

   1. text=text.decode('ascii','ignore')
   2. s=filter(lambda x: x in string.printable, s)
   3. text=u''+text
      text=text.decode().encode('utf-8')

しかし、それでも同様のエラーが発生します。誰かが適切な解決策を指摘できますか?また、コーデックは動作を取り除きます。競合バイトが文字列としてファイルに書き込まれなくても問題はないため、損失は受け入れられます。

4

2 に答える 2

11

あなたsmart_strDjangoモジュールを通してそれをすることができます。これを試してみてください:

from django.utils.encoding import smart_str, smart_unicode

text = u'\u2019'
print smart_str(text)

管理者権限でコマンドシェルを起動してDjangoをインストールし、次のコマンドを実行できます。

pip install Django
于 2013-03-12T14:54:12.143 に答える
9

あなたのデータはUnicodeデータです。これをファイルに書き込むには、次を使用します.encode()

text = text.encode('ascii', 'ignore')

しかし、それはASCIIではないものをすべて削除します。代わりに、UTF-8などのより適切なエンコーディングにエンコードしたいと思ったことはありませんか?

PythonとUnicodeについて読みたいと思うかもしれません:

于 2013-03-12T14:42:30.087 に答える