web-dev-qa-db-ja.com

Pythonでユーロ(€)記号を印刷するにはどうすればよいですか?

Pythonコマンドラインインタープリター(v3.5 for Windows)を使用して).

やりたいことは、ユーロ(€)記号を含むテキストを出力することコード80h(128 dec)であると理解しています。

#!
# -*- coding: utf-8 -*-

mytext = 'Please pay \x8035.'
print(mytext)

最後の行に落ちる:

UnicodeEncodeError: 'charmap' codec can't encode character '\x80' in position 11: character maps to <undefined>

私はグーグル(エンコードの再設定など)をたくさん行ってきましたが、なぜ印刷コマンドが失敗するのかおおまかな考えを持っています。上記のコードをいじくり回すと、予想どおり、ASCII\x7fまでのコードが正常に機能します。

しかし、を表示する方法を理解できず、圧倒的で不可解なエンコーディングに関する情報を見つけています。 (私は初心者です!)

  • テキスト文字列の前にuを付けて、最初にUnicode文字列を作成してみました。
  • 中間オブジェクトoutputtext = mytext.encode( 'utf-8')を作成しようとしましたが、これをprintで出力すると、展開されます文字列をさらに不可解な形式に変換します:b '\ xc2\x8035に支払ってください。'
  • この中間文字列を出力するためにprintの代わりに別の関数を見つけようとしましたが、まだ何も機能していません。

誰かが私にいくつかのコードを見せてもらえますかちょうど動作する、それで私はそれを研究してそこから逆に作業することができます。ありがとう!

6
LD2k

Python 3.xにユーロ記号を含む文字列を印刷する4つの方法を、あいまいなものから順に示します。

1。直接入力

キーボードを使用して記号を入力するか、別の場所からコピーして貼り付けます。

_mytext = "Please pay €35."
print(mytext)
_

2。 Unicodeグリフ番号を使用

たとえば非常に便利なページ http://www.fileformat.info/info/unicode/ からUnicodeグリフ番号を検索し、そのコードを文字列で使用します。

_mytext = "Please pay \u20ac35."
print(mytext)
_

3。グリフ名を使用

unicodedataモジュールの lookup() を使用して、名前でUnicodeグリフにアクセスできます。繰り返し http://www.fileformat.info/info/unicode/ はグリフ名を見つけるのに役立ちます:

_import unicodedata

mytext = "Please pay {}35.".format(unicodedata.lookup("EURO SIGN"))
print(mytext)
_

4。 Windows-1252コードページを使用

_\x80_バイトコードを本当に使用したい場合は、Windows-1252コードページのユーロ記号を表すため、それを行うことができます。まず、そのバイトコードを含むバイト文字列を作成し、次にそのバイト文字列をデコードして、バイトコードがWindows-1252コードページのユーロ記号エントリに変換されるようにする必要があります。

_mytext = b"Please pay \x8035.".decode("windows-1252")
print(mytext)
_
7
Schmuddi
**You can use Unicode Character Name**

\ N {name}は、ユニコード文字記号を印刷するのに最適な方法です

これはサンプル実行です...

>>> print "Please pay %s"%(u"\N{euro sign}")
Please pay €
>>> print "Please pay %s"%(u"\N{dollar sign}")
Please pay $
>>> print "Please pay %s"%(u"\N{rupee sign}")
Please pay ₨
>>> print "Please pay %s"%(u"\N{pound sign}")
Please pay £

それでおしまい...

6
Gopal Prasad

あなたはこれを使うことができます:

mytext = 'Please pay \u20ac.'
print(mytext)

... nicode Character 'EURO SIGN' に基づいています。

ただし、スクリプトの文字エンコーディングで文字を表現できる場合は、記述してはならない理由はありません。

mytext = 'Please pay €.'
3
trincot

http://www.python-forum.org/viewtopic.php?f=6&t=13995 から:

これはpython 2、の動作です。Python3はこれを行いません。

Python 2.7:

>>> s = "€"
>>> s
'\xe2\x82\xac'
>>> print s
€
>>> s = u"€"
>>> s
u'\u20ac'
>>> print s
€
>>> print('\xe2\x82\xac'.decode('utf8'))
€

Python 3.4

>>> s = '€'
>>> s
'€'
>>> print(s)
€
>>> 
>>> print(repr(s))
'€'
2
Brian

ユーロは80h文字セットで0x80windows-1252)としてエンコードされ、Pythonに次のように伝える必要があります。

# -*- coding: utf-8 -*-

mytext = b'Please pay \x8035.'.decode('windows-1252')
print(mytext)

他の人が言ったように、正しいエンコーディング(utf-8)を使用して、実際のユーロ文字をソースコードに直接書き込むか、その表現を使用することもできます。

# -*- coding: utf-8 -*-

mytext = u'Please pay \u20ac35.'
print(mytext)

...または...

# -*- coding: utf-8 -*-

mytext = 'Please pay €35.'
print(mytext)

このコードは、Python 2および3の両方で機能します。

1

Python 3では、€文字を直接コピーして、UTF-8エンコードされたテキストファイルに直接貼り付けることができます(コードは必要ありません)。

mytext = 'Please pay €.'
print(mytext)
0
Paul Nordin