Используйте их!
SUB =
str.maketrans("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",
"₀₁₂₃₄₅₆₇₈₉ₐᵦ??ₑfgₕᵢⱼₖₗₘₙₒₚqᵣₛₜᵤᵥwₓyz??????????????????????????₋")
SUP =
str.maketrans("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",
"⁰¹²³⁴⁵⁶⁷⁸⁹ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᵠʳˢᵗᵘᵛʷˣʸᶻᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᵠʳˢᵗᵘᵛʷˣʸᶻ‾")
Вот код:
original = ['VO₆_Octa', 'FeO₄_Tet', 'FeO₆_Oct', 'BaO₉_Tsf', 'PrO₆_Oct', 'CaO₆_Oct',
'HgO₂_Lin', 'CrO₆_Oct', 'AgO₄_Tet', 'EuO₉_Tsf']
SUB =
str.maketrans("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",
"₀₁₂₃₄₅₆₇₈₉ₐᵦ??ₑfgₕᵢⱼₖₗₘₙₒₚqᵣₛₜᵤᵥwₓyz??????????????????????????₋")
SUP =
str.maketrans("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_",
"⁰¹²³⁴⁵⁶⁷⁸⁹ᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᵠʳˢᵗᵘᵛʷˣʸᶻᵃᵇᶜᵈᵉᶠᵍʰⁱʲᵏˡᵐⁿᵒᵖᵠʳˢᵗᵘᵛʷˣʸᶻ‾")
new = []
for item in original:
x = item.split('_')
new.append(x[0] + "₋" + x[1].translate(SUB))
print(new)
Как вы могли заметить, некоторые буквы на самом деле не конвертируются должным образом в нижний регистр. Это связано с тем, что алфавиты для нижнего и верхнего индексов на самом деле не существуют как правильный алфавит в Юникоде. Я использовал различные онлайн-конвертеры и мог получать только те преобразования букв, которые вы видите выше (ie: исключая строчные b, c, d, f, g, q, w, y, z).
Однако, на мой взгляд, лучший способ сделать это - отформатировать строку на каком-то языке разметки (HTML, Latex et c). Вам придется использовать простые теги <sub></sub>
и <sup></sup>
в HTML.