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

LD2*_*D2k 5 python utf-8 character-encoding

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

我要做的就是输出一些包含欧元(€)符号的文本,据我了解该代码为80h(12月128日)。

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

mytext = 'Please pay \x8035.'
print(mytext)
Run Code Online (Sandbox Code Playgroud)

它落在最后一行:

UnicodeEncodeError: 'charmap' codec can't encode character '\x80' in position 11: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

我已经进行了大量的谷歌搜索(重新编码等),并且我大致了解了为什么print命令失败。修改上面的代码表明,\ x7f以下的ASCII代码可以正常工作,正如人们所期望的那样。

但是我不知道如何显示,并且发现有关编码的信息不堪重负且难以理解。(请记住我只是菜鸟!)

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

请能有人告诉我一些代码,只是作品,所以我可以研究它,并从那里工作倒退。谢谢!

Sch*_*ddi 6

以下是四种在Python 3.x中按欧元顺序打印带有欧元符号的字符串的方法,以增加晦涩度的顺序。

1.直接输入

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

mytext = "Please pay €35."
print(mytext)
Run Code Online (Sandbox Code Playgroud)

2.使用Unicode字形数字

例如从非常有用的页面http://www.fileformat.info/info/unicode/中查找Unicode字形编号,然后在您的字符串中使用该代码:

mytext = "Please pay \u20ac35."
print(mytext)
Run Code Online (Sandbox Code Playgroud)

3.使用字形名称

您可以lookup()unicodedata模块中使用按名称访问Unicode字形。同样,http://www.fileformat.info/info/unicode/将帮助您找到字形名称:

import unicodedata

mytext = "Please pay {}35.".format(unicodedata.lookup("EURO SIGN"))
print(mytext)
Run Code Online (Sandbox Code Playgroud)

4.使用Windows-1252代码页

如果您确实想使用\x80字节码,则可以这样做,因为它在Windows-1252代码页中代表欧元符号。您需要做的是首先创建一个包含该字节代码的字节字符串,然后对该字节字符串进行解码,以便将该字节代码转换为Windows-1252代码页中的欧元符号条目:

mytext = b"Please pay \x8035.".decode("windows-1252")
print(mytext)
Run Code Online (Sandbox Code Playgroud)


Gop*_*sad 6

**You can use Unicode Character Name**
Run Code Online (Sandbox Code Playgroud)

\ 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 £
Run Code Online (Sandbox Code Playgroud)

而已...


tri*_*cot 4

你可以使用这个:

\n\n
mytext = \'Please pay \\u20ac.\'\nprint(mytext)\n
Run Code Online (Sandbox Code Playgroud)\n\n

...基于Unicode 字符 \'EURO SIGN\'

\n\n

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

\n\n
mytext = \'Please pay \xe2\x82\xac.\'\n
Run Code Online (Sandbox Code Playgroud)\n