Печать подписи на 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 (большинство в настоящее время), вы можете использовать индексы Unicode. (например, H₂) А именно подписки находятся в диапазонах:

  • 0x208N для номеров, +, -, =, (, ) (N идет от 0 в F)
  • 0x209N для писем

Например:

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

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

Использование такого кода тоже работает:

print('\N{GREEK SMALL LETTER PI}r\N{SUPERSCRIPT TWO}')
print('\N{GREEK CAPITAL LETTER THETA}r\N{SUBSCRIPT TWO}')

Результат:

πr²
Θ₂

Обратите внимание, что это работает только на Python версии 3.3 и выше. Форматирование Unicode.

Если вы хотите использовать его по осям сюжета, вы можете:

import matplotlib.pyplot as plt
plt.plot([1])
plt.ylabel(r'$H_{2}$')
plt.show()

который дает

https:https://stackru.com/images/7389698227375aa4a575dede534892051489b3e1.png

Используя этот код, вы можете использовать алфавиты в надстрочном и подстрочном индексе. В этом коде форматом () является функция, а в функции формата ('\unicode')

Используя эту таблицу ( индексы и надстрочные индексы Unicode в Википедии), вы можете присвоить подходящий юникод подходящему

вы можете использовать надстрочный и дополнительный скрипт

"10{}".format('\u00B2')  # superscript 2
Другие вопросы по тегам