De derecha a izquierda y de izquierda a derecha bien impresos

Quiero que produzca el número junto a una palabra para que pueda pedirle al usuario que seleccione la palabra utilizando el número correspondiente.

Este es mi codigo

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) 

Produce esto Salida de código

El primer número de cada línea se imprime a la izquierda, pero la palabra a la derecha, mientras que el rest de los números y las palabras se imprimen RTL. Parece que una vez que Python ha comenzado a imprimir en una línea LTR, puede cambiar a RTL, pero no volver de RTL a LTR. Observe cómo incluso los períodos se imprimen a la derecha del número para el segundo conjunto de números en cada línea.

Funciona perfectamente bien y se ve bien con palabras en inglés:

    mesa de pitón funciona en ingles

    Supongo que una solución puede implicar poner el número después de la palabra, pero creo que debe haber una mejor manera.

    Coloque un carácter de incrustación de derecha a izquierda , u'\u202B' , al principio de cada palabra hebrea, y un carácter de formato de dirección pop , u'\u202C' , al final de cada palabra.

    Esto establecerá las palabras hebreas aparte como secciones RTL en un documento de otro modo LTR.

    (Tenga en cuenta que si bien esto producirá el resultado correcto, también depende de la aplicación de terminal en la que esté ejecutando este script, ya que ha implementado el algoritmo bidireccional de Unicode correctamente).