使用 Python 将阿拉伯语或任何从右到左书写系统的字符串打印到 Linux 终端

tob*_*n9e 5 python linux right-to-left

非常简单的例子是:

\n\n
city = "\xe2\x80\x8f\xd8\xa7\xd9\x84\xd9\x85\xd9\x83\xd9\x84\xd8\xa7\xe2\x80\x8e"\nprint(city)\n
Run Code Online (Sandbox Code Playgroud)\n\n

我期望输出是:

\n\n
\xe2\x80\x8f\xd8\xa7\xd9\x84\xd9\x85\xd9\x83\xd9\x84\xd8\xa7\xe2\x80\x8e\n
Run Code Online (Sandbox Code Playgroud)\n\n

但实际上输出是相反的字符串(字母看起来有点不同,因为它们有开始、中间和结束形式)。我无法将其粘贴到此处,因为复制粘贴会再次更正字符串的顺序。

\n\n

如何在 Linux 终端上正确打印阿拉伯语?周围的文本是从左到右 (LTR),只有这一行需要是从右到左 (RTL)。是否有 UFT-8 字符可以告诉终端这一点?

\n

Dar*_*non 0

要创建带有 RTL 字符的字符串:

rtl = u'\u200f'
Run Code Online (Sandbox Code Playgroud)

Python 3 默认使用 UTF 字符串,因此在这种情况下,字符串前面的“u”是不必要的。

如果问题实际上是终端无法正确呈现,您可以手动反转字符串。

test = 'Hello world'
test = test[::-1]
# test == 'dlroW olleH'
Run Code Online (Sandbox Code Playgroud)

还有python-bidi 库可能会有所帮助。(来源