左の二重引用符、アポストロフィの右の一重引用符などのように、Unicodeの句読点を使用するテキストがいくつかあり、ASCIIでそれを必要としています。 Pythonには、これらの文字のデータベースに明白なASCIIの代用文字が含まれているので、それらをすべて "?"にするよりもうまくいくでしょうか? ?Pythonの「このUnicodeに最適なASCII」データベースはどこにありますか?
答えて
Unidecodeは完全なソリューションのようです。それは空想の引用符をascii引用符に変換し、アクセント付きのラテン文字を非アクセントに変換し、ASCII同等物をもたない文字を扱うために翻字を試みます。あなたのユーザーはたくさんのを見る必要はありませんそのように?従来の7ビットASCIIシステムにテキストを渡さなければならなかった時です。
>>> from unidecode import unidecode
>>> print unidecode(u"\u5317\u4EB0")
Bei Jing
http://www.tablix.org/~avian/blog/archives/2009/01/unicode_transliteration_in_python/
Hm ..ドイツ語のウムラウトは、例えば、 ö= oe、ä= aeなど。 – ThiefMaster
@ThiefMasterは、すべての言語で当てはまる同等のものですか?たぶんUnidecodeは最低の共通分母に向かいます。 –
言語に依存しないソリューションのためには、確かにユニコードが使用されます。ドイツ語を中心としたソリューションの場合は、適切なcharectersを手作業で( 's /ö/ oe /'など)変換してから、残りを 'unidecode 'でクリーンアップしてください。 – alexis
興味深い質問です。
Googleは、以下のようunicodedata moduleを使用してdescibesたthis pageを見つける私を助け:
私のオリジナルの答えでimport unicodedata
unicodedata.normalize('NFKD', title).encode('ascii','ignore')
便利ですが、Unicodeの句読点を捨てます。 – joeforker
、私はまた、unicodedata.normalize
を示唆しました。しかし、私はそれをテストすることにしました。それはUnicodeの引用符では機能しません。アクセント付きのUnicode文字を変換するのはうまくいくので、unicodedata.normalize
はunicode.decomposition
関数を使って実装されていると推測しています。これはおそらく文字と分音記号の組み合わせであるUnicode文字しか処理できないと信じています実際にはUnicode仕様のエキスパートではないので、私は熱い空気でいっぱいになるかもしれません...
どんな場合でも、句読点文字を扱うのにunicode.translate
を使うことができます。必要な場合は、より多くの句読点マッピングを追加することができます
'Maps left and right single and double quotation marks'
'into ASCII single and double quotation marks'
>>> punctuation = { 0x2018:0x27, 0x2019:0x27, 0x201C:0x22, 0x201D:0x22 }
>>> teststring = u'\u201Chello, world!\u201D'
>>> teststring.translate(punctuation).encode('ascii', 'ignore')
'"hello, world!"'
が、私ドン:translate
方法は、このようにあなたは句読点と互換性をASCIIにUnicode文字のみの句読点を変換マッピングを作成することができ、Unicodeの序にUnicodeの序の辞書を取りますすべてのUnicodeの句読点文字を処理することを必ずしも心配する必要はないと思います。 でアクセントやその他の発音記号を処理する必要がある場合は、unicodedata.normalize
を使用してこれらの文字を処理できます。
'unidecode'パッケージも参照してください – joeforker
http://code.activestate.com/recipes/251871/には、+ => +/-やその他の文字以外の文字については、NFKDソリューションと変換テーブルを行ういくつかの方法があります。
- 1. このテーブルに最適なSQL文はありますか?
- 2. コンパイラに「ページ最適化」などのことはありますか?
- 3. Magentoデータベースで適切な税クラスIDはどこにありますか?
- 4. DAGの最適化に関するドキュメントはどこにありますか?
- 5. このPython構文エラーはどこにありますか?
- 6. このpythonコードのどこにエラーがありますか?
- 7. データベース:コミットする前のデータはどこにありますか?
- 8. JVMの最適化はどこから始まりますか?
- 9. Windowsプラットフォーム用の最新のpython 3.3 bindary buildはどこにありますか?
- 10. linuxのplaces.sqliteデータベースはどこにありますか?
- 11. データベース移行はNode.jsプロジェクトのどこにありますか?
- 12. Ionic2/3プロジェクトのSQLiteデータベースはどこにありますか?
- 13. Luceneの最新バージョンのパフォーマンスメトリックはどこにありますか?
- 14. 最新のSubversion(1.9.4)のsvnbookはどこにありますか?
- 15. 最新のAndroidエミュレータのソースコードはどこにありますか?
- 16. このPython関数はどのパッケージにありますか?
- 17. PythonのモジュールMySQLdbのManページはどこにありますか?
- 18. GIOのGSocketのPythonバインディングはどこにありますか?
- 19. このようなSilverlightブラウズコントロールはどこにありますか?
- 20. この無効なポインタはどこにありますか?
- 21. このような$ PSはどこにありますか?
- 22. 最新バージョンのZend Debug Protocolはどこにありますか?
- 23. Kunderaチュートリアルの最新版はどこにありますか?
- 24. 最新のブラウザ互換ガイドはどこにありますか?
- 25. Pythonの標準ライブラリコードはどこにありますか?
- 26. python-interpreterのエラーコードはどこにありますか?
- 27. JavaやPythonのソースコードはどこにありますか?
- 28. memoized python関数のキャッシュはどこにありますか?
- 29. Pythonのstdlibテストはどこにありますか?
- 30. OpenCV 3.1.0のPython 3.5で `CV_HAAR_SCALE_IMAGE`はどこにありますか?
あなたは勇敢な戦士です。 UnicodeはPythonのアーチ・ネメシスです。 –
これを知っている人は、[PythonのUnicode文字列でアクセントを削除するにはどうすればよいですか?](http://stackoverflow.com/q/517923/562769) –