Python中的阿拉伯语单词

2024-04-18 07:11:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python中打印阿拉伯语文本时遇到了一个问题,我编写了一个代码,将英语字符转换为阿拉伯语字符(聊天语言或法语-阿拉伯语),然后在不同的结果之间创建一个组合,以根据用户输入获得建议。在

def transliterate(francosentence, verbose=False):
    francowords = francosentence.split()
    arabicconvertedwords = []
    for i in francowords:
        rankeddata=[]
        rankeddata=transliterate_word(i)
        arabicconvertedwords.append(rankeddata)
        for index in range(len(rankeddata)):
            print rankeddata[index]

    ran=list(itertools.product(*arabicconvertedwords))
    for I in range(len(ran)):
        print ran[I]

第一次打印(print rankeddata[index])给出了阿拉伯语单词,但是在执行组合过程之后,第二次打印(print ran[I])给出了如下内容:(u'\u0627\u0646\u0647',u'\u0631\u0627\u064a\u062d',u'\u0627\u062c\u0627\u0645\u0639\u0647')

我怎样才能打印阿拉伯语单词?在


Tags: inforindexlenrange字符单词transliterate
1条回答
网友
1楼 · 发布于 2024-04-18 07:11:30

第二个循环操作的是unicodeproduct)的tuples,而不是单个的unicode值。在

虽然print使用打印对象的str形式,tuplestr形式使用了所包含对象的repr,但它没有传播“stry”(从技术上讲,tuple完全缺少{},因此它回到了{})。在

如果您想看到阿拉伯语,您需要单独打印元素或将它们连接起来,以便打印字符串,而不是tuple。例如,您可以更改:

print ran[I]

像是:

^{pr2}$

它将转换为一个逗号分隔的unicode值,print将按预期格式格式化(即str格式),而不是对非ASCII值使用带转义符的repr形式。在

旁注:作为样式(和内存使用)的一个要点,直接使用迭代器协议,不要list通知所有内容,然后使用C风格的索引循环。如果输入很大,以下代码必须在内存中存储大量的内容(输出的总大小是每个输入长度的乘积):

ran=list(itertools.product(*arabicconvertedwords))
for I in range(len(ran)):
    print u', '.join(ran[I])

在这种情况下,它可以根据需要轻松地一次生成一个项目,从而更快地生成结果,而无需内存开销:

# Don't listify...
ran = itertools.product(*arabicconvertedwords)
for r in ran:  # Iterate items directly, no need for list or indexing
    print u', '.join(r)

相关问题 更多 >