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

如何使用print在Python中显示特殊字符,python,printing,Python,Printing,在我正在编写的Python程序中,我需要打印™(版权)符号。有没有一个简单的方法可以做到这一点?或者Python不支持它?这里有一个例子 print ("\(copyright symbol here\)") 只是一个很简单的问题。谢谢 当然!键入版权符号: print("©") (Python中没有像HTML中那样的字符实体。)版权标志是unicode字符。 如果您的终端支持包含此字符的字符编码(如utf-8或cp1252),则可以打印: 这依赖于Python检测终端的字符编码: In

在我正在编写的Python程序中,我需要打印™(版权)符号。有没有一个简单的方法可以做到这一点?或者Python不支持它?这里有一个例子

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

只是一个很简单的问题。谢谢

当然!键入版权符号:

print("©")

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

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

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

In [64]: print(u'\N{COPYRIGHT SIGN}')
©
In [65]: print(u'\N{COPYRIGHT SIGN}'.encode('utf-8'))
©
这使用了显式编码(由于我的终端设置为使用utf-8字符编码,所以这种编码恰好起作用):


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

  • “)”:直接键入。
    • 这意味着您可能必须为源代码选择字符编码,例如,显式地将文件保存为UTF-8,并在其顶部放置编码头。(对于3.3,UTF-8是默认值,因此如果使用的是编码头,则不需要编码头。)
    • 在MacOSX下,在大多数语言的默认键盘设置中,这是opt-G
    • 在Windows下,我相信您可以使用带有0169的alt数字键盘来输入它,尽管这看起来并不容易
    • 如果您不知道如何用键盘键入“)”,请从其他地方复制并粘贴它(谷歌“版权标志”,您应该找到一个可以从中复制的页面,或者从这里复制)
    • 或者,您的计算机可能有一个字符查看器或类似的东西,可以让您指向并单击特殊字符
  • “\u00a9”:使用Unicode数字转义序列。
    • 谷歌搜索“unicode版权标志”,你很快就会看到它是U+00A9。在Python中,这是“'\u00a9”
    • 对于基本多语言平面之外的任何内容,即超过4个十六进制数字,请使用大写字母
      U
      和8位数字
  • '\N{版权标志}'
    :使用Unicode实体名称转义序列。
    • 同样,您可能需要通过谷歌为实体找到正确的名称
    • 它并没有完全记录什么名字可以使用,什么名字不能使用。但它通常在您期望的时候起作用,
      版权标志
      显然比
      00a9
      更具可读性
您也可以间接地执行操作,例如,
unicodedata。查找('COPYRIGHT SIGN')
chr(0xa9)
将返回与上述文本相同的字符串。但是没有理由不使用文字

如果您不愿意阅读整个内容,Python文档中的将对此有更多详细信息,描述不同类型的转义序列(以及unicode和字节字符串之间的编码/解码问题,这在2.x中尤为重要),并描述如何指定编码声明

如果您想要一个可以使用的所有字符的正式列表,而不是仅仅通过谷歌搜索它们,那么可以查看Python版本的文档,其中包含指向Unicode字符数据库相应版本的链接。(例如,在3.3.0中是6.1.0,在2.7.3中是5.2.0,等等)您必须浏览一些链接才能找到实际的列表,但这是唯一一种确保编译成Python的内容的方法。(而且,如果你不在乎这一点,你也可以用谷歌搜索它,或者使用维基百科或你电脑的角色查看器。)

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

在python 2中:

>>> print u"\u00a9"
©
>>> print u"\N{COPYRIGHT SIGN}"
©
在python 3中:

>>> print("\u00a9")
©
>>> print("\N{COPYRIGHT SIGN}")
©
>>> print("©")
©
在Python2中,必须在字符串前面加上u(
u“…”
)来告诉python它是一个unicode字符串。但是,在Python3中,所有字符串都是unicode字符串,因此您不必(实际上在3.0-3.2中也不允许)在字符串前面加上u

您可以在此处查看字符及其名称/unicode值的列表:
就像你看到这里使用的版权符号一样使用它们

我要指出,根据你的位置,版权符号在键盘上并不常见…@Quilliom:它在哪里?我使用Compose、O、C键入它,但除此之外,字符映射可能是一种方式。您可以键入以下内容:
print(\xa9”)
(在python3.2中)@cIph3r:No,在python3中,
chr(169)
(或者更好的是,
chr(0xa9)
不是UTF-8,而是Unicode字符#169。(我假设您使用的是3.x,考虑到您之前的评论以及您使用的函数是
print
,您指的是3.x.)@cIph3r:1。但是
chr(169)
不返回UTF-8字符串。它返回一个Unicode字符串,其基本编码是显式UTF-16或-32(3.0-3.2),或未指定的实现细节(3.3),而不是UTF-8.2。十六进制可能更好,因为任何提供
字符编号的参考、帮助页等都将以十六进制形式提供给您,例如U+00A9。所以您(和您的读者)将不必来回转换。3.您没有阅读括号内的注释吗,我明确地说,我假设您使用3.x,因为您在上一条注释中说了3.2?作为旁注:您真的希望这些反斜杠出现吗?如果是这样,最好是显式地将它们加倍,或者使用原始字符串,而不是依赖事实那
\(
\)
恰好不是转义序列。嗯……对我来说,只用一个反斜杠就可以打印引号和括号。不过谢谢你的建议。事实上,在Python 3.2和更高版本中,你可以在字符串前面加上
u
。(当然,我是这样做的。)
>>> print("\u00a9")
©
>>> print("\N{COPYRIGHT SIGN}")
©
>>> print("©")
©