2

私はpythonモジュールrequestsを使用していくつかのAPIからデータを取得していますが、それらはすべて辞書に変換されたjsonデータを返します。私がやりたいことは、これらの辞書からいくつかの情報を取得し、それらすべてをstemmingおよびstring.translate()モジュールを使用できる Python 文字列に変換するか、すべてをこれらのモジュールが認識できるデータに変換することです。UTF-8 データではこれを行うことができず、頭を悩ませています。これに対する解決策はありますか? dict を反復処理して ASCII に変換できますか?

奇妙なことは、ASCII 文字列を他の関数の UTF データと比較していて、(if ASCII-word is in UTF dict: do something)完全に機能することです。ASCII 値は常に UTF-8 データと一致します。このエンコーディングについてはまったく理解できません

4

2 に答える 2

3

UTF-8はASCIIの拡張であり、有効な7ビットASCIIテキストも有効なUTF-8テキストであるため、すべてのデータが実際にASCIIで表現可能である場合、ASCIIかUTF-8かは関係ありません。

来るデータがUTF-8でエンコードされている場合、最良のアプローチはそれをUnicodeオブジェクトにデコードすることです。たとえば、あるソースから文字列を読み取り、それを変数utf8strに格納する場合、次のことができますutf8str.decode('utf-8')。次に、このUnicodeオブジェクトを渡し、Unicodeオブジェクトに対してすべての操作を実行します。代わりにstring.translate使用できますunicode.translate(そこで「translate」と呼ばれる文字列メソッドを参照していると仮定します)。

モジュールがUnicode文字列を処理できない場合は、それをどのように処理するかを考える必要があります。入力にASCIIで表現できない文字が含まれている場合の対処方法を決定する必要があります。

于 2012-07-28T23:52:06.873 に答える
0

関数がUnicodeをサポートしていないことが確実な場合は、いつでもASCII近似に変換できます。

ascii_string = unicodedata.normalize('NFKD', unicode_string).encode('ascii','ignore') 
于 2012-07-28T23:51:10.880 に答える