我在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')
我怎样才能打印阿拉伯语单词?在
第二个循环操作的是
unicode
(product
)的tuple
s,而不是单个的unicode
值。在虽然},因此它回到了{})。在
print
使用打印对象的str
形式,tuple
的str
形式使用了所包含对象的repr
,但它没有传播“stry”(从技术上讲,tuple
完全缺少{如果您想看到阿拉伯语,您需要单独打印元素或将它们连接起来,以便打印字符串,而不是
tuple
。例如,您可以更改:像是:
^{pr2}$它将转换为一个逗号分隔的
unicode
值,print
将按预期格式格式化(即str
格式),而不是对非ASCII值使用带转义符的repr
形式。在旁注:作为样式(和内存使用)的一个要点,直接使用迭代器协议,不要
list
通知所有内容,然后使用C风格的索引循环。如果输入很大,以下代码必须在内存中存储大量的内容(输出的总大小是每个输入长度的乘积):在这种情况下,它可以根据需要轻松地一次生成一个项目,从而更快地生成结果,而无需内存开销:
相关问题 更多 >
编程相关推荐