首页 > 解决方案 > 用python字符串中的上标替换每个插入符号

问题描述

我想用 unicode 上标替换每个插入字符,以便在 python 中更好地打印方程。我的问题是,每个插入符号后面可能跟着一个不同的指数值,所以在 unicode 字符串 u'\u00b*' 中,* 通配符需要是我要在字符串中打印的指数。我认为一些正则表达式可以解决这个问题,但我的经验很少。

例如,假设我有一个字符串 "x^3-x^2" ,然后我希望将其转换为 unicode 字符串 u"x\u00b3-x\u00b2"

标签: pythonpython-3.x

解决方案


您可以使用re.subandstr.translate来捕获指数并将它们更改为 unicode 上标。

import re

def to_superscript(num):
    transl = str.maketrans(dict(zip('1234567890', '¹²³⁴⁵⁶⁷⁸⁹⁰')))
    return num.translate(transl)

s = 'x^3-x^2'

out = re.sub('\^\s*(\d+)', lambda m: to_superscript(m[1]), s)

print(out)

输出

x³-x²

推荐阅读