我使用命令行解释器(适用于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代码可以正常工作。
但我无法弄清楚如何显示€,而且我发现编码信息压倒性且难以理解。 (记住我只是个菜鸟!)
请有人给我看一些正常工作的代码,这样我就可以研究它并从那里开始向后工作。谢谢!
答案 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
字符集中编码为0x80
(windows-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)