如何使用unicode打印和保留从左到右的顺序
问题描述:
我试图在单行中打印一个字符串,后跟一个空格,然后跟一个数字。该字符串来自unicode中的一长串列表,其中一些(但不是全部)列表以从右向左的格式显示。我的问题是,当我使用这种格式的字符串时,我想要的顺序是相反的。如何使用unicode打印和保留从左到右的顺序
这里是一个最小的工作示例:
line1='abcd'
line2='אבגד'
print line1+' '+str(1)
print line2+' '+str(1)
的输出中是
abcd 1
אבגד1
第一输出处于所需的顺序,但第二个是没有的。有没有办法避免这种逆转?我需要使用Python Standard Library。
答
在要打印的字符串的开头添加一个从左到右的标记(表示为u'\ u200E')。这是一个不可见的字符,它会强制文本的方向,所以它不会对以这种方式打印的文本产生负面影响。下面的代码生成所需的输出:
print u'\u200E'+line1+' '+str(1)
print u'\u200E'+line2+' '+str(1)
欲了解更多信息,请参阅https://en.m.wikipedia.org/wiki/Left-to-right_mark
起初我以为我需要首先弄清楚哪些字符串是从右到左的语言,但事实证明我只需将该字符添加到所有字符串中,不会产生负面影响。另外,通过测试,我发现它需要在_before_之前,而不是在字符串之后。我可以在此基础上发布更完整的答案,但我不确定这是否是良好的礼仪。 –