如何在Python 3中打印上标/下标?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Python 3中打印上标/下标?相关的知识,希望对你有一定的参考价值。
[有人可以帮我找到一种好方法,以便在Python 3中打印上标和下标吗?有一些有用的方法吗?
答案
您可以使用sympy模块为您执行必要的格式化。它支持多种格式,例如ascii,unicode,latex,mathml等:
from sympy import pretty_print as pp, latex
from sympy.abc import a, b, n
expr = (a*b)**n
pp(expr) # default
pp(expr, use_unicode=True)
print(latex(expr))
print(expr.evalf(subs=dict(a=2,b=4,n=5)))
输出
n
(a*b)
n
(a⋅b)
$\left(a b\right)^n$
32768.0000000000
对于那些寻求实用的(但不完美的)基于UTF-8的解决方案的人,使用简单的字符转换表来实现:
import string
superscript_map =
"0": "⁰", "1": "¹", "2": "²", "3": "³", "4": "⁴", "5": "⁵", "6": "⁶",
"7": "⁷", "8": "⁸", "9": "⁹", "a": "ᵃ", "b": "ᵇ", "c": "ᶜ", "d": "ᵈ",
"e": "ᵉ", "f": "ᶠ", "g": "ᵍ", "h": "ʰ", "i": "ᶦ", "j": "ʲ", "k": "ᵏ",
"l": "ˡ", "m": "ᵐ", "n": "ⁿ", "o": "ᵒ", "p": "ᵖ", "q": "۹", "r": "ʳ",
"s": "ˢ", "t": "ᵗ", "u": "ᵘ", "v": "ᵛ", "w": "ʷ", "x": "ˣ", "y": "ʸ",
"z": "ᶻ", "A": "ᴬ", "B": "ᴮ", "C": "ᶜ", "D": "ᴰ", "E": "ᴱ", "F": "ᶠ",
"G": "ᴳ", "H": "ᴴ", "I": "ᴵ", "J": "ᴶ", "K": "ᴷ", "L": "ᴸ", "M": "ᴹ",
"N": "ᴺ", "O": "ᴼ", "P": "ᴾ", "Q": "Q", "R": "ᴿ", "S": "ˢ", "T": "ᵀ",
"U": "ᵁ", "V": "ⱽ", "W": "ᵂ", "X": "ˣ", "Y": "ʸ", "Z": "ᶻ", "+": "⁺",
"-": "⁻", "=": "⁼", "(": "⁽", ")": "⁾"
trans = str.maketrans(
''.join(superscript_map.keys()),
''.join(superscript_map.values()))
['快速的棕色狐狸跳过懒狗'.translate(trans)
ᵀʰᵉᵇʳᵒʷⁿᵈᵒᵍᵈᵒᵍᵈᵒᵍ
作为奖励,这是下标副本:
subscript_map =
"0": "₀", "1": "₁", "2": "₂", "3": "₃", "4": "₄", "5": "₅", "6": "₆",
"7": "₇", "8": "₈", "9": "₉", "a": "ₐ", "b": "♭", "c": "꜀", "d": "ᑯ",
"e": "ₑ", "f": "բ", "g": "₉", "h": "ₕ", "i": "ᵢ", "j": "ⱼ", "k": "ₖ",
"l": "ₗ", "m": "ₘ", "n": "ₙ", "o": "ₒ", "p": "ₚ", "q": "૧", "r": "ᵣ",
"s": "ₛ", "t": "ₜ", "u": "ᵤ", "v": "ᵥ", "w": "w", "x": "ₓ", "y": "ᵧ",
"z": "₂", "A": "ₐ", "B": "₈", "C": "C", "D": "D", "E": "ₑ", "F": "բ",
"G": "G", "H": "ₕ", "I": "ᵢ", "J": "ⱼ", "K": "ₖ", "L": "ₗ", "M": "ₘ",
"N": "ₙ", "O": "ₒ", "P": "ₚ", "Q": "Q", "R": "ᵣ", "S": "ₛ", "T": "ₜ",
"U": "ᵤ", "V": "ᵥ", "W": "w", "X": "ₓ", "Y": "ᵧ", "Z": "Z", "+": "₊",
"-": "₋", "=": "₌", "(": "₍", ")": "₎"
sub_trans = str.maketrans(
''.join(subscript_map.keys()),
''.join(subscript_map.values()))
['快速的狐狸跳过懒狗'.translate(sub_trans)
'ₜₕₑ♭ᵣₒwₙբₒₓₗₐᵧᵧ2ᵧ]'
再次,不是完美,但可行。
以上是关于如何在Python 3中打印上标/下标?的主要内容,如果未能解决你的问题,请参考以下文章