Справа налево и слева направо напечатаны красиво
Я хочу, чтобы он производил число рядом со словом, чтобы я мог попросить пользователя выбрать слово, используя соответствующий номер.
Это мой код
alt_words = hlst
loopnum = 8
for i in range(loopnum):
if i < len(alt_words):
print('{0}. {1:<20}'.format((i+1), alt_words[i]), end =' ')
if i == 0:
print('', end=' ')
if i + 9 <= len(alt_words):
print('{0}. {1:<20}'.format((i+9), alt_words[i+8]), end =' ')
if i + 17 <= len(alt_words):
print('{0}. {1:<20}'.format((i+17), alt_words[i+16]), end=' ')
print('\n'+'-'*80)
Первое число каждой строки печатается слева, но слово справа, а остальные цифры и слова печатаются RTL. Кажется, что после того, как python начал печатать на линейной LTR, он может переключиться на RTL, но не обратно с RTL на LTR. Обратите внимание, что даже периоды печатаются справа от номера для второго набора чисел в каждой строке.
Он отлично работает и хорошо выглядит с английскими словами:
Я предполагаю, что обходной путь может заключаться в том, чтобы поставить число после слова, но я думаю, что должен быть лучший способ.
2 ответа
Поместите встраивание справа налево, u'\u202B'
в начале каждого ивритского слова и символа " Направленное форматирование", u'\u202C'
в конце каждого слова.
Это выделит ивритские слова как разделы RTL в другом документе LTR.
(Обратите внимание, что, хотя это даст правильный вывод, вы также зависите от терминального приложения, в котором вы запускаете этот скрипт, правильно реализовав двунаправленный алгоритм Unicode.)
См . Реализация двунаправленной (BiDi) раскладки на чистом питоне .
Установить с помощью:
pip install python-bidi
Пример использования:
from bidi.algorithm import get_display
print(get_display('LTR text with RTL text (טקסט לדוגמא) will be printed correctly'))
Следующий пакет также доступен, если вы используете Django: http://pypi.python.org/pypi/django-bidi-utils