Печать индекса в python

в Python 3.3 есть ли способ сделать часть текста в строковом индексе при печати?

например, H₂ (H, а затем индекс 2)

2 ответов


Если все, что вам нужно, это цифры, вы можете использовать str.maketrans() и str.translate() методы:

>>> SUB = str.maketrans("0123456789", "₀₁₂₃₄₅₆₇₈₉")
>>> SUP = str.maketrans("0123456789", "⁰¹²³⁴⁵⁶⁷⁸⁹")
>>> "H2SO4".translate(SUB)
'H₂SO₄'

обратите внимание, что это не будет работать в Python 2 - см. функция Python 2 maketrans () не работает с Unicode для объяснения того, почему это так, и как это обойти.


вывод, выполняемый на консоли, является простым текстом. Если терминал поддерживает unicode (большинство в настоящее время), вы можете использовать индексы Юникода. (e.g H₂) а именно, индексы находятся в диапазонах:

  • 0x208N для чисел,+, -, =, (, ) (N сочетается с 0 to F)
  • 0x209N для букв

например:

In [6]: print(u'H\u2082O\u2082')
H₂O₂

для более сложного вывода необходимо использовать язык разметки (например, HTML) или язык набора текста (например, LaTeX).