英語の単語がロシア語とフランス語の翻訳を指す辞書を作りたいです。
PythonでUnicode文字を出力するにはどうすればよいですか? また、ユニコード文字を変数にどのように格納しますか?
英語の単語がロシア語とフランス語の翻訳を指す辞書を作りたいです。
PythonでUnicode文字を出力するにはどうすればよいですか? また、ユニコード文字を変数にどのように格納しますか?
Python ソース コードに Unicode 文字を含めるには、文字列のフォームでUnicode エスケープ文字\u0123
を使用できます。Python 2.x では、文字列リテラルの前に「u」を付ける必要もあります。
Python 2.x インタラクティブ コンソールで実行する例を次に示します。
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
Python 2 では、 Python Unicode ドキュメントで説明されているように、文字列の前に「u」を付けると、それらが Unicode タイプの変数として宣言されます。
Python 3 では、'u' プレフィックスはオプションになりました。
>>> print('\u0420\u043e\u0441\u0441\u0438\u044f')
Россия
上記のコマンドを実行してもテキストが正しく表示されない場合は、端末が Unicode 文字を表示できない可能性があります。
これらの例では Unicode エスケープ ( \u...
) を使用しています。これにより、ソース コードをプレーン ASCII のままにしながら Unicode 文字を出力できます。これは、異なるシステムで同じソース コードを使用する場合に役立ちます。print u'Россия'
すべてのシステムが Unicode ファイルを適切に処理できると確信している場合は、Python ソース コード (Python 2 など) で直接 Unicode 文字を使用することもできます。
ファイルから Unicode データを読み取る方法については、次の回答を参照してください。
Python インタープリターから直接 Unicode 文字を出力します。
el@apollo:~$ python
Python 2.7.3
>>> print u'\u2713'
✓
Unicode文字u'\u2713'
はチェックマークです。インタープリターは、画面にチェックマークを印刷します。
Python スクリプトから Unicode 文字を出力します。
これを test.py に入れます:
#!/usr/bin/python
print("here is your checkmark: " + u'\u2713');
次のように実行します。
el@apollo:~$ python test.py
here is your checkmark: ✓
チェックマークが表示されない場合は、端末の設定やストリームのリダイレクトで行っていることなど、別の場所に問題がある可能性があります。
Unicode 文字をファイルに保存します。
これをファイルに保存します: foo.py:
#!/usr/bin/python -tt
# -*- coding: utf-8 -*-
import codecs
import sys
UTF8Writer = codecs.getwriter('utf8')
sys.stdout = UTF8Writer(sys.stdout)
print(u'e with obfuscation: é')
それを実行し、出力をファイルにパイプします。
python foo.py > tmp.txt
tmp.txt を開いて中を見ると、次のように表示されます。
el@apollo:~$ cat tmp.txt
e with obfuscation: é
したがって、難読化マークを付けて unicode e をファイルに保存しました。
u
Python 2 では、Unicode 文字列を, as in で宣言し、u"猫"
および を使用decode()
しencode()
て、それぞれ Unicode への変換および Unicode からの変換を行います。
Python 3 ではかなり簡単です。非常に優れた概要については、こちらを参照してください。そのプレゼンテーションは、私にとって多くのことを明確にしました。
これが、このトピックを Google で検索したときの最初のスタック オーバーフローの結果であることを考慮すると、Python 3 では、Unicode 文字列へのプレフィックスu
はオプションであることに言及する必要があります (Python 2 の例は、トップの回答からコピーされました)。
Python 3 (両方とも動作):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
パイソン 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
まだ追加されていないものをもう 1 つだけ
Python 2 で、Unicode を含む変数を出力して を使用する場合は.format()
、次のようにします (フォーマットされているベース文字列を で Unicode 文字列にしu''
ます:
>>> text = "Université de Montréal"
>>> print(u"This is unicode: {}".format(text))
>>> This is unicode: Université de Montréal