2

PythonのSpreadsheetAPIを使用してGoogleスプレッドシートからデータを抽出しています。スプレッドシートのすべての行をforループでコマンドラインに印刷できますが、一部のテキストには摂氏度記号(小さな円)などの記号が含まれています。これらの行をコマンドラインに出力するときに、ファイルに書き込みたいと思います。しかし、これを行うと、さまざまなUnicodeエラーが発生します。手動で解決してみましたが、多すぎます。

current=current.replace(u'\xa0',u'')
current=current.replace(u'\u000a',u'p')
current=current.replace(u'\u201c',u'\"')
current=current.replace(u'\u201d',u'\"')
current=current.replace(u'\u2014',u'-')

エラーが発生しないようにするにはどうすればよいですか?例えば

UnicodeEncodeError:'ascii'コーデックは位置1394の文字u'\ xa0'をエンコードできません:序数が範囲内にありません(128)

current=current.replace(u'\u0446',u'u')
4

3 に答える 3

5

あなたはそれがどんなエンコーディングからでもそれをデコードしたいです:

decoded_str = encoded_str.decode('utf-8')

Unicode文字列の処理方法の詳細については、http://docs.python.org/howto/unicode.htmlにアクセスしてください

于 2011-12-17T09:01:49.117 に答える
0
import unicodedata
decoded = unicodedata.normalize('NFKD', encoded).decode('UTF-8', 'ignore')

この場合、正規化が必要かどうかはよくわかりません。また、無視オプションは、デコード エラーが無視されるため、一部の情報が失われる可能性があることを意味します。

于 2011-12-17T09:18:43.000 に答える
-1
''.join(c for c in current if ord(c) < 128)
于 2011-12-17T09:02:45.740 に答える