12

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

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

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

4

5 回答 5

15

在 Python 中,您可以通过三种方式将 Unicode 字符放入字符串中。(如果您使用的是 2.x 而不是 3.x,则使用 Unicode 字符串更简单——例如 inu"…"而不是"…"——而且你必须使用unichrinstead of chr,否则一切都是一样的。)

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

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

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

如果你想要一份你可以使用的所有字符的官方列表,而不是仅仅搜索它们,查看unicodedata你的 Python 版本的文档,其中包含指向适当版本的 Unicode 字符数据库的链接。(例如,3.3.0 中的 6.1.0、2.7.3 中的 5.2.0 等)您必须浏览几个链接才能到达实际列表,但这是您唯一的方法得到一些可以保证完全是编译成 Python 的东西。(而且,如果你不关心这个,你也可以用谷歌搜索它,或者使用维基百科或你电脑的字符查看器。)

于 2013-02-27T00:52:53.647 回答
9

在python 2中:

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

在python 3中:

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

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

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

于 2013-02-27T01:01:47.510 回答
3

当然!键入版权符号:

print("©")

(Python 中没有字符实体,比如 HTML。)

于 2013-02-27T00:46:15.113 回答
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'))
©
于 2013-02-27T00:50:22.657 回答
3
print u"\u00A9"

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

于 2013-02-27T00:59:26.247 回答