1

文字列内のすべての非ASCIIまたは非Unicode文字を検索し、それらをASCIIまたはUnicodeの同等のものに置き換えるPython用の包括的な文字置換モジュールはありますか? エンコードまたはデコード中の「無視」引数のこの快適さは正気ではありませんが、同様に「?」も同様です。翻訳されていないキャラクターがいたすべての場所で。

厄介な文字を見つけて、要求された標準に準拠させるモジュールを探しています。現存するアルファベットとエンコーディングの量がこれをやや不可能にしていることは理解していますが、誰かがそれを試したことはありますか? 初歩的な解決策でさえ、現状よりも優れています。

これが意味するデータ転送の簡素化は非常に大きいです。

4

2 に答える 2

4

私はあなたが望むことは本当に可能だとは思いませんが、まともな選択肢があると思います。

unicodedataには、テキストを適切に劣化させることができる「正規化」メソッドがあります...

import unicodedata
def gracefully_degrade_to_ascii( text ):
    return unicodedata.normalize('NFKD',text).encode('ascii','ignore')

使用している文字セットがすでにUnicodeにマップされている、または少なくともUnicodeにマップできると仮定すると、このモジュールを使用して、そのテキストのUnicodeバージョンをasciiまたはutf-8にダウンダウンできるはずです(これは標準の一部です)。ライブラリも)

完全なドキュメント-http ://docs.python.org/library/unicodedata.html

于 2012-10-17T22:50:36.953 に答える
0

個々の文字を見て、そのエンコードを推測するのは難しく、おそらくあまり正確ではありません。ただし、chardet を使用して、ファイル全体のエンコーディングを試して検出することはできます。次に、文字列の decode() および encode() メソッドを使用して、エンコーディングを UTF-8 に変換できます。

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

また、UTF-8 は ASCII と下位互換性があるため、大した問題にはなりません。

于 2012-10-11T00:06:05.707 に答える