在Python中打印下标
在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
的范围是从0
到F
) - 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 一起使用 的相关内容。