从右到左和从左到右打印得很好

Right-to-Left and Left-to-Right printed nicely

我希望它生成单词旁边的数字,以便我可以要求用户使用相应的数字 select 该单词。

这是我的代码

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。请注意,每行的第二组数字的右边是如何打印句点的。

它工作得很好,英文单词也很好看:

我猜测解决方法可能是将数字放在单词后面,但我认为一定有更好的方法。

在每个希伯来语单词的开头放置一个从右到左的嵌入字符u'\u202B',以及一个流行方向格式字符,u'\u202C',在每个单词的末尾。

这会将希伯来语单词作为 LTR 文档中的 RTL 部分分开。

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

参见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