Ser*_*hya 3 python hebrew right-to-left python-3.x 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)
Run Code Online (Sandbox Code Playgroud)
每行的第一个数字打印在左侧,但是右侧的单词,而其余的数字和单词打印在RTL上.似乎一旦python开始在LTR线上打印,它就可以切换到RTL,但不能从RTL返回到LTR.请注意,即使周期打印在每行第二组数字的数字右侧.
它工作得很好,用英文单词看起来不错:
我猜一个工作可能涉及把数字放在后面,但我认为必须有一个更好的方法.
在每个希伯来词的开头放置一个从右到左的嵌入字符,u'\u202B'在每个单词的末尾放置一个Pop Directional Formatting字符u'\u202C'.
这将把希伯来语单词设置为另外的LTR文档中的RTL部分.
(请注意,虽然这将产生正确的输出,但您还依赖于正在运行此脚本的终端应用程序,该脚本已正确实现了Unicode双向算法.)
安装:
\npip install python-bidi\nRun Code Online (Sandbox Code Playgroud)\n用法示例:
\nfrom bidi.algorithm import get_display\nprint(get_display(\'LTR text with RTL text (\xd7\x98\xd7\xa7\xd7\xa1\xd7\x98 \xd7\x9c\xd7\x93\xd7\x95\xd7\x92\xd7\x9e\xd7\x90) will be printed correctly\'))\nRun Code Online (Sandbox Code Playgroud)\n如果您使用 Django,还可以使用以下包:\n http://pypi.python.org/pypi/django-bidi-utils
\n