英語の単語がロシア語とフランス語の翻訳を指す辞書を作りたいです。
PythonでUnicode文字を出力するにはどうすればよいですか?また、Unicode文字を変数にどのように格納しますか?
英語の単語がロシア語とフランス語の翻訳を指す辞書を作りたいです。
PythonでUnicode文字を出力するにはどうすればよいですか?また、Unicode文字を変数にどのように格納しますか?
回答:
PythonソースコードにUnicode文字を含めるには、文字列の形式でUnicodeエスケープ文字を使用し\u0123
、文字列リテラルの前に「u」を付けることができます。
Pythonインタラクティブコンソールで実行する例を次に示します。
>>> print u'\u0420\u043e\u0441\u0441\u0438\u044f'
Россия
このように宣言された文字列は、PythonのUnicodeドキュメントで説明されているように、Unicodeタイプの変数です。
上記のコマンドを実行してもテキストが正しく表示されない場合は、端末がUnicode文字を表示できない可能性があります。
ファイルからのUnicodeデータの読み取りについては、次の回答を参照してください。
mystr
か?それを印刷する方法は?
print your_unicode_characters.encode('utf-8')
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をファイルに保存しました。
print()
Unicodeにしようとしていて、ASCIIコーデックエラーが発生する場合は、このページを確認してください。TLDRはexport PYTHONIOENCODING=UTF-8
Pythonを起動する前に行われます(この変数は、コンソールが文字列データをエンコードしようとするバイトのシーケンスを制御します)。内部的には、Python3はデフォルトでUTF-8を使用します(Unicode HOWTOを参照))そのため、それは問題ではありません。他の回答やコメントにあるように、文字列にUnicodeを入れるだけです。問題が発生するのは、このデータをコンソールに出力しようとしたときです。Pythonは、コンソールはASCIIしか処理できないと考えています。他の回答のいくつかは、「最初にファイルに書き込む」と言いますが、そうするためにエンコード(UTF-8)を指定していることに注意してください(したがって、Pythonは書き込みで何も変更しません)。次に、メソッドを使用して読み取ります。エンコーディングを考慮せずにバイトを吐き出すファイル。これが機能する理由です。
Python 2では、Unicode文字列をで宣言します。たとえば、u
in u"猫"
とuse 、およびを使用decode()
しencode()
て、それぞれunicodeとの間で変換を行います。
Python 3の方がかなり簡単です。非常に優れた概要がここにあります。そのプレゼンテーションは私に多くのことを明らかにしました。
これがGoogleがこのトピックを検索したときの最初のスタックオーバーフロー結果であることを考えると、u
Unicode文字列のプレフィックスはPython 3ではオプションであることを述べています(Python 2の例は上の答えからコピーされました)。
Python 3(両方の作業):
print('\u0420\u043e\u0441\u0441\u0438\u044f')
print(u'\u0420\u043e\u0441\u0441\u0438\u044f')
Python 2:
print u'\u0420\u043e\u0441\u0441\u0438\u044f'
私はWindowsでポータブルwinpythonを使用しています。これにはIPython QTコンソールが含まれており、次のことを達成できます。
>>>print ("結婚")
結婚
>>>print ("おはよう")
おはよう
>>>str = "結婚"
>>>print (str)
結婚
ユニコード文字を表示するには、コンソールインタープリターがユニコードをサポートしている必要があります。
'+'を'000'に置き換えます。たとえば、「U + 1F600」は「U0001F600」になり、Unicodeコードの前に「\」を付けて印刷します。例:
>>> print("Learning : ", "\U0001F40D")
Learning : 🐍
>>>
これを確認してください多分それはpython unicode emojiを助けるでしょう