在Python中打印下标

28 投票
5 回答
185774 浏览
提问于 2025-04-18 10:55

在Python 3.3中,有没有办法在打印字符串时让文本的一部分变成下标呢?

比如说,像H₂(H后面有个下标2)这样的效果。

5 个回答

2

通过使用这段代码,你可以在上标和下标中使用字母。

在这段代码中,format() 是一个函数,而在这个函数中使用了 ('\unicode')。

你可以参考这个表格(维基百科上的 Unicode 上标和下标),根据需要给合适的内容使用合适的 Unicode。

你可以使用上标和下标。

"10{}".format('\u00B2')  # superscript 2
16

如果你想在图表的坐标轴上使用它,可以这样做:

import matplotlib.pyplot as plt
plt.plot([1])
plt.ylabel(r'$H_{2}$')
plt.show()

这样就会得到:

这里输入图片描述

关于Tex标记语言的详细信息,以及如何在matplotlib中使用它,可以在这里找到。

19

像这样写代码也可以:

print('\N{GREEK SMALL LETTER PI}r\N{SUPERSCRIPT TWO}')
print('\N{GREEK CAPITAL LETTER THETA}r\N{SUBSCRIPT TWO}')

输出结果是:

πr²
Θ₂

请注意,这种方法只适用于Python 3.3及以上的版本。它使用了Unicode格式。

34

在控制台上显示的内容就是简单的文本。如果你的终端支持unicode(现在大多数都支持),你可以使用unicode的下标,比如H₂。具体来说,下标的范围是:

  • 0x208N 用于数字、+-=()N的范围是从0F
  • 0x209N 用于字母

举个例子:

In [6]: print(u'H\u2082O\u2082')
H₂O₂

如果你想输出更复杂的内容,就需要使用标记语言(比如HTML)或者排版语言(比如LaTeX)。

48

如果你只关心数字的话,可以使用 str.maketrans()str.translate() 这两个方法:

example_string = "A0B1C2D3E4F5G6H7I8J9"

SUB = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")
SUP = str.maketrans("0123456789", "⁰¹²³⁴⁵⁶⁷⁸⁹")

print(example_string.translate(SUP))
print(example_string.translate(SUB))

这样会输出:

A⁰B¹C²D³E⁴F⁵G⁶H⁷I⁸J⁹
A₀B₁C₂D₃E₄F₅G₆H₇I₈J₉

需要注意的是,这在 Python 2 中是无法使用的——想了解原因和解决办法,可以查看 Python 2 的 maketrans() 函数无法与 Unicode 一起使用 的相关内容。

撰写回答