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

时间:2017-03-02 12:53:15

标签: python python-3.x right-to-left hebrew left-to-right

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

这是我的代码

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

我猜测一项工作可能涉及将数字放在单词之后,但我认为必须有更好的方法。

2 个答案:

答案 0 :(得分:6)

在每个希伯来语单词的开头加上从右到左嵌入字符u'\u202B',以及弹出方向格式字符{{ 1}},在每个单词的末尾。

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

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

答案 1 :(得分:1)

Bi-directional (BiDi) layout implementation in pure python

安装:

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