如何在PYTHON中正确打印阿拉伯文字

Moh*_* Sy 6 python arabic-support

我正在使用Python 2.7,并且尝试打印这样的阿拉伯字符串

print "??? ?????? ??? ???????"
Run Code Online (Sandbox Code Playgroud)

它给出以下输出:

?°?‡?¨ ?§?„?·?§?„?¨ ?§?„?‰ ?§?„?…?¯?±?³?©
Run Code Online (Sandbox Code Playgroud)

目的是正确打印文本,而不是如何打印每一行。那么,如何才能以原始格式正确打印文本文件的字符串或内容?喜欢:

??? ?????? ??? ???????
Run Code Online (Sandbox Code Playgroud)

Jal*_*avi 13

通过此模块,您可以纠正文本形状的方向。只需安装 pips 并使用它。

# install: pip install --upgrade arabic-reshaper
import arabic_reshaper

# install: pip install python-bidi
from bidi.algorithm import get_display

text = "??? ?????? ??? ???????"
reshaped_text = arabic_reshaper.reshape(text)    # correct its shape
bidi_text = get_display(reshaped_text)           # correct its direction
Run Code Online (Sandbox Code Playgroud)


小智 6

以下代码有效:

\n
import arabic_reshaper\n\ntext_to_be_reshaped =  '\xd8\xa7\xd9\x84\xd9\x84\xd8\xba\xd8\xa9 \xd8\xa7\xd9\x84\xd8\xb9\xd8\xb1\xd8\xa8\xd9\x8a\xd8\xa9 \xd8\xb1\xd8\xa7\xd8\xa6\xd8\xb9\xd8\xa9'\n\nreshaped_text = arabic_reshaper.reshape(text_to_be_reshaped)\n\nrev_text = reshaped_text[::-1]  # slice backwards \n\nprint(rev_text)\n
Run Code Online (Sandbox Code Playgroud)\n


MYG*_*YGz 5

尝试这个:

\n\n
print u"\xd8\xb0\xd9\x87\xd8\xa8 \xd8\xa7\xd9\x84\xd8\xb7\xd8\xa7\xd9\x84\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaf\xd8\xb1\xd8\xb3\xd8\xa9"\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出:

\n\n
\xd8\xb0\xd9\x87\xd8\xa8 \xd8\xa7\xd9\x84\xd8\xb7\xd8\xa7\xd9\x84\xd8\xa8 \xd8\xa7\xd9\x84\xd9\x89 \xd8\xa7\xd9\x84\xd9\x85\xd8\xaf\xd8\xb1\xd8\xb3\xd8\xa9\n
Run Code Online (Sandbox Code Playgroud)\n\n

演示: https: //repl.it/EuHM/0

\n\n

默认的Python2.7字符串使用utf-8字符集。而且阿拉伯语不包含在 utf-8 中。因此,如果您在其前面加上uthen ,它将将该字符串视为 unicode 字符串。

\n