如何在Python中打印欧元(€)符号?

时间:2016-10-08 18:26:54

标签: python utf-8 character-encoding

我使用命令行解释器(适用于Windows的v3.5)教自己Python。

我要做的就是输出一些包含欧元(€)符号的文字,据我所知,它是代码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>

我已经完成了大量的Google搜索(重新编码等),而且我已经大致了解了打印命令失败的原因。修改上面的代码表明,达到\ x7f的ASCII代码可以正常工作。

但我无法弄清楚如何显示,而且我发现编码信息压倒性且难以理解。 (记住我只是个菜鸟!)

  • 我尝试用 u 为文本字符串添加前缀,以便首先创建一个unicode字符串。
  • 我尝试过创建一个中间对象 outputtext = mytext.encode('utf-8')但是用 print 输出它会将字符串扩展为更加神秘的内容形式: b'请支付\ xc2 \ x8035。'
  • 我试图找到一个不同的函数而不是 print 来输出这个中间字符串,但还没有任何工作。

请有人给我看一些正常工作的代码,这样我就可以研究它并从那里开始向后工作。谢谢!

6 个答案:

答案 0 :(得分:4)

以下是使用Python 3.x中的欧元符号打印字符串的四种方法,按照隐匿的顺序递增。

<强> 1。直接输入

使用键盘输入符号,或从其他位置复制并粘贴:

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

<强> 2。使用Unicode字形编号

查找Unicode字形编号,例如从非常有用的页面http://www.fileformat.info/info/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)

答案 1 :(得分:4)

**You can use Unicode Character Name**

\ N {name}是打印Unicode字符符号的好方法

这是示例运行。...

>>> 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 £

就这样...

答案 2 :(得分:2)

您可以使用:

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

...基于Unicode Character 'EURO SIGN'

但如果角色可以用脚本的字符编码表示,那么就没有理由不写了:

mytext = 'Please pay €.'

答案 3 :(得分:2)

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

这是python 2的行为,Python 3没有这样做。

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))
'€'

答案 4 :(得分:1)

欧元在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。

答案 5 :(得分:0)

在Python 3中,您只需将€字符直接复制并粘贴到UTF-8编码的文本文件中(无需代码):

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