从右到左,从左到右印刷得很好

问题描述 投票:3回答:1

我想让它产生一个单词旁边的数字,这样我就可以要求用户使用相应的数字来选择单词。

这是我的代码

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)

它生产这个Output from code

每行的第一个数字打印在左侧,但是右侧的单词,而其余的数字和单词打印在RTL上。似乎一旦python开始在LTR线上打印,它就可以切换到RTL,但不能从RTL返回到LTR。请注意,即使是在每行上第二组数字的数字右侧打印周期。

它工作得很好,用英文单词看起来不错:

python table works in english

我猜一个工作可能涉及把数字放在后面,但我认为必须有一个更好的方法。

python python-3.x right-to-left hebrew left-to-right
1个回答
6
投票

在每个希伯来词的开头放置一个从右到左的嵌入字符u'\u202B',在每个单词的末尾放置一个Pop Directional Formatting字符u'\u202C'

这将把希伯来语单词设置为另外的LTR文档中的RTL部分。

(请注意,虽然这将产生正确的输出,但您还依赖于正在运行此脚本的终端应用程序,该脚本已正确实现了Unicode Bidirectional Algorithm。)

© www.soinside.com 2019 - 2024. All rights reserved.