6

我希望它在单词旁边产生数字,以便我可以要求用户使用相应的数字来选择单词。

这是我的代码

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。请注意,即使是句点也打印在每行第二组数字的数字右侧。

它工作得很好,看起来很适合英文单词:

python表用英文工作

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

4

2 回答 2

8

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

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

(请注意,虽然这将产生正确的输出,但您还依赖于运行此脚本的终端应用程序是否正确实现了Unicode 双向算法。)

于 2017-03-02T14:05:40.510 回答
4

请参阅纯 python 中的双向 (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

于 2021-01-23T18:39:19.357 回答