用python字符串中的上标替换每个插入符号

时间:2018-09-29 17:55:01

标签: python python-3.x

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

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

1 个答案:

答案 0 :(得分:3)

您可以使用re.substr.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²