3

処理中のテキストファイルには、����のような文字があります。彼らが何であるかわからない。

これらの文字を削除/変換する方法を知りたいです。

.encode('ascii'、'ignore')を使用してASCIIに変換しようとしました。Pythonは、charはwhithinではないと言った0,128

unicodedata、unicodedata.normalize('NFKD'、text).encode('ascii'、'ignore')も試しましたが、同じエラーが発生しました

誰か助けますか?

ありがとう!

4

2 に答える 2

7

表示したコードを使用して、いつでもUnicode文字列を使用できます。

my_ascii = my_uni_string.encode('ascii', 'ignore')

それでエラーが発生した場合は、そもそもUnicode文字列が実際にはありませんでした。それが本当なら、代わりにバイト文字列があります。使用しているエンコーディングを知る必要があり、次のコマンドでUnicode文字列に変換できます。

my_uni_string = my_byte_string.decode('utf8')

(エンコーディングがUTF-8であると仮定します)。

このバイト文字列とUnicode文字列の分割は、混乱を招く可能性があります。私のプレゼンテーション、語用論的Unicode、または「痛みを止める方法」は、すべてをまっすぐに保つのに役立ちます。

于 2012-06-30T01:03:24.590 に答える
1

これは完全ではありませんが(特に短い文字列の場合)、chardetライブラリはここで役立ちます。

http://pypi.python.org/pypi/chardet

chardetにエンコードを理解させてから、ユニコードとしてエンコードするには、次のようにします。

import chardet
encoding = chardet.detect(some_string)['encoding']
unicode_string = unicode(some_string, encoding)

もちろん、ASCIIの範囲外にある場合は、ASCIIとしてエンコードすることはできません。

于 2012-06-30T02:06:54.843 に答える