如何使用print在Python中显示特殊字符

时间:2013-02-27 00:45:11

标签: python printing

在我写的Python程序中,我需要打印©(版权)符号。是否有捷径可寻?或者Python不支持它?这是一个例子。

print ("\(copyright symbol here\)") 

只是一个非常简单的问题。谢谢!

5 个答案:

答案 0 :(得分:14)

在Python中,您可以通过三种方式将Unicode字符放在字符串中。 (如果你使用的是2.x而不是3.x,那么使用Unicode字符串会更简单 - 就像u"…"而不是"…"一样 - 你必须使用unichr代替chr,但其他方面都是一样的。)

  • '©':直接输入。
    • 这意味着您可能必须为源代码选择字符编码 - 例如,将文件显式保存为UTF-8,并在其顶部放置编码标题。 (对于3.3,UTF-8是默认值,因此如果您使用的话,则不需要编码头。)
    • 在Mac OS X下,在大多数语言的默认键盘设置中,这是opt-G。
    • 在Windows下,我相信你可以使用0169的alt-numeric-keypad技巧输入它,虽然这看起来不是很容易。
    • 如果您不知道如何使用键盘输入“©”,请从其他地方复制并粘贴(谷歌“版权符号”,您应找到一个页面,您可以从中复制 - 或者,就此而言,正确从这里开始)。
    • 或者,您的计算机可能具有字符查看器或类似功能,可让您指向并单击特殊字符。
  • '\ u00a9':使用Unicode数字转义序列。
    • 谷歌的“unicode版权标志”,你会很快发现它是U + 00A9。在Python中,那是''\ u00a9'。
    • 对于Basic Multilingual Plane以外的任何内容 - 即超过4个十六进制数字,请使用大写U和8位数字。
  • '\N{COPYRIGHT SIGN}':使用Unicode实体名称转义序列。
    • 同样,您可能需要谷歌才能找到该实体的正确名称。
    • 没有完整记录您可以使用和不能使用的名称。但它通常会在您期望它时起作用,COPYRIGHT SIGN显然比00a9更具可读性。

你也可以间接做事 - 例如,unicodedata.lookup('COPYRIGHT SIGN')chr(0xa9)将返回与上面文字相同的字符串。但是没有理由不使用文字。

Python文档中的Unicode HOWTO有更多详细信息 - 如果您不愿意阅读整篇文章,The String Type描述了不同类型的转义序列(以及与之相关的问题) unicode和字节串之间的编码/解码,这在2.x中尤其重要,而Unicode Literals in Python Source Code描述了如何指定编码声明。

如果您想要一个可以使用的所有字符的正式列表,而不是仅使用Google搜索,请查看您的Python版本的unicodedata文档,其中包含指向相应版本的Unicode字符数据库的链接。 (例如,3.3.0中的6.1.0,5.7.3中的5.2.0等)你必须浏览几个链接才能进入实际列表,但这是你唯一的方法。得到的东西保证完全是编译成Python的东西。 (而且,如果您不关心这一点,您可能只是谷歌它,或使用维基百科或您的计算机的角色查看器。)

答案 1 :(得分:7)

在python 2中:

>>> print u"\u00a9"
©
>>> print u"\N{COPYRIGHT SIGN}"
©

在python 3中:

>>> print("\u00a9")
©
>>> print("\N{COPYRIGHT SIGN}")
©

在python 2中,你必须在字符串前加上一个u(u"...")来告诉python它是一个unicode字符串。但是,在python 3中,所有字符串都是unicode字符串,因此您不必(实际上不允许在3.0-3.2中)使用u作为字符串前缀。

您可以在此处查看字符列表及其名称/ unicode值:http://www.fileformat.info/info/charset/UTF-16/list.htm 并按照与此处使用的版权符号相同的方式使用它们

答案 2 :(得分:3)

当然!输入版权符号:

print("©")

(Python中没有像HTML中那样的字符实体。)

答案 3 :(得分:3)

版权符号是unicode字符。 如果您的终端支持包含此字符的字符编码(例如utf-8或cp1252),则可以打印它:

这依赖于Python检测终端的字符编码:

In [64]: print(u'\N{COPYRIGHT SIGN}')
©

这使用了一种显式编码(由于我的终端设置为使用utf-8字符编码,因此可以正常工作):

In [65]: print(u'\N{COPYRIGHT SIGN}'.encode('utf-8'))
©

答案 4 :(得分:2)

print u"\u00A9"

其中“\u00A9”是版权符号的unicode字符。