2017-03-02 271 views
3

我希望它能够生成一个单词旁边的数字,以便我可以要求用户使用相应的数字来选择该单词。Python从右到左和从左到右打印得很好

这是我的代码

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

我猜测各地的工作可能涉及把数字后,但我想一定有更好的办法。

+0

你有没有试过[这](HTTP ://stackoverflow.com/questions/3856403/right-to-left-languages-in-python)? –

+0

漂亮的兔子洞。主要答案是“你有没有试过这个......” –

+0

正确显示的实际文字,所以我不确定它是否相关。 – Seraphya

回答

4

把一个从右到左嵌入字符,u'\u202B',在每个希伯来语单词的开头和弹出方向格式字符,u'\u202C',在每一个单词的结尾。

这将在其他LTR文档中将希伯来文单词分隔为RTL部分。

(请注意,虽然这将产生正确的输出,你也依赖于你正在运行已经正确实施Unicode Bidirectional Algorithm这个脚本的终端应用。)

相关问题