【问题标题】:Printing urdu (non-latin language) word by word using python使用python逐字打印乌尔都语(非拉丁语言)
【发布时间】:2017-10-01 06:06:53
【问题描述】:

我正在尝试使用 python 打印乌尔都语单词。我阅读了有关 Unicode 的信息,但 [我面临的问题是 python 尝试像英语一样打印乌尔都语,即从左到右逐个字符地打印。在乌尔都语字符] 不能像英文那样打印。我已经尝试了一些解决方案,例如提到的here,但它们对我不起作用。我一直在尝试使用以下代码打印我的乌尔都语字符串。

text_string = "آکاش کمار".decode('utf-8')   
print text_string

我在 Ubuntu 终端上得到的output 就像是从左到右而不是从右到左的英语,而且也是逐个字符的。

【问题讨论】:

  • 那是因为你的终端没有使用合适的文本布局引擎。
  • 那是终端应用程序的问题,更确切地说它应该打印命令提示符 LTR 和您的输出 RTL。这将导致一团糟,尤其是当两者都排成一行时。所以通常只能有一个方向。

标签: python urdu


【解决方案1】:

我认为问题出在 Gnome 终端上,它不支持双向(即从右到左或“RTL”)文本输出。如果我运行您的上述程序(带有编码声明):

# -*- coding: utf-8 -*-
text_string = "آکاش کمار".decode('utf-8')
print(text_string)

在 Emacs shell 缓冲区中(是否支持混合 LTR 和 RTL 输出),我得到正确的输出:

$ python2 urdu.py
آکاش کمار
$ 

但是,如果我在 Gnome 终端中运行它,我会得到您发布的向后输出。

如果您不使用 Emacs,另一种选择是安装 mlterm(多语言终端)包并使用它提供的终端模拟器。

【讨论】:

  • 感谢您的帮助,但我试图使用这个东西实现的真正目标是生成包含乌尔都语文本的图像,用于训练文本/非文本乌尔都语分类器。我遵循了相同的代码,但没有打印输出,而是尝试在图像上绘制它,但我仍然遇到了类似的问题。
  • @NileshKumar:再次,布局引擎。使用一个。
【解决方案2】:

使用 LibRaqm 可以解决您的问题,下面给出了该库的链接 https://github.com/HOST-Oman/libraqm

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2022-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多