【问题标题】:How to print and preserve left-to-right order with unicode如何使用 unicode 打印和保留从左到右的顺序
【发布时间】:2016-05-16 00:05:59
【问题描述】:

我试图在一行中打印一个字符串,后跟一个空格,然后是一个数字。该字符串来自一个长长的 unicode 列表,其中一些(但不是全部)采用从右到左的格式。我的问题是,当我使用这种格式的字符串时,我想要的顺序被颠倒了。

这是一个最小的工作示例:

line1='abcd'
line2='אבגד'
print line1+' '+str(1)
print line2+' '+str(1)

输出是

abcd 1
אבגד1  

第一个输出按所需顺序,但第二个输出不是。有没有办法避免这种逆转?

另外,我只需要使用Python Standard Library

【问题讨论】:

    标签: python-2.7 unicode-string


    【解决方案1】:

    在要打印的字符串的开头添加一个从左到右的标记(表示为 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 之前,而不是在字符串之后。我可以基于此发布更完整的答案,但我不确定这是否是好的礼仪。
    猜你喜欢
    • 1970-01-01
    • 2017-07-22
    • 1970-01-01
    • 2016-01-31
    • 2017-02-21
    • 2022-01-13
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    相关资源
    最近更新 更多