首页 文章

Python列表使用HINDI文本打印包含字典元素的utf-8文字

提问于
浏览
0

我正在使用Python 2.7,我是初学者 . 我在使用包含印地语字符串的dict对象打印列表时遇到问题 .

我有一个包含几个字典对象的列表,如下所示:

[{u'text': u'+4a41+'}, {u'text': u'+4a42+'}, {u'text': u'+4a43+'}, {u'text': u'+4a44+'}, {u'text': u'+4a45+'}]

每个包含对象一个元素并对应于键 'text' ,有'string id' . 在上面的列表中,对于第一个dict元素,字符串id是 4a41 .

我读了这些字符串id并在字典中查找以找到与id对应的字符串并用字符串替换id . 我的字典包含印地语字符串 . 当我获取并打印字符串值时,它们被正确打印但是当我将它们添加到dict对象并将它们放入列表中时,打印列表会显示utf字符而不是实际的印地文文本 .

我在下面发布一个示例输出:

[{u'text': u'+4a41+'}, {u'text': u'+4a42+'}, {u'text': u'+4a43+'}, {u'text': u'+4a44+'}, {u'text': u'+4a45+'}]  

ENCODING:  {'confidence': 0.99, 'encoding': 'utf-8'}  
DICT ITEM 142 डिनर के बाद चहलकदमी को पारिवारिक परंपरा बनाएं   

ENCODING:  {'confidence': 0.99, 'encoding': 'utf-8'}  
DICT ITEM 142 प्रत्येक 30 मिनट पर उठें और चलें-फिरें  

ENCODING:  {'confidence': 0.99, 'encoding': 'utf-8'}  
DICT ITEM 142 किसी पड़ोसी से मिलने जाते समय चल कर जाएं  

ENCODING:  {'confidence': 0.99, 'encoding': 'utf-8'}  
DICT ITEM 142 किसी मित्र के साथ रोजाना सुबह टहलने की योजना बनाएं  

ENCODING:  {'confidence': 0.99, 'encoding': 'utf-8'}  
DICT ITEM 142 अपने लक्ष्य के आधे चरणों को दोपहर तक करने की कोशिश करें  

return_list [{u'text': '\xe0\xa4\xa1\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xa6 \xe0\xa4\x9a\xe0\xa4\xb9\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa4\xa6\xe0\xa4\xae\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95 \xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa4\x82\xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xac\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82'}, {u'text': '\xe0\xa4\xaa\xe0\xa5\x8d\xe0\xa4\xb0\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xaf\xe0\xa5\x87\xe0\xa4\x95 30 \xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\x9f \xe0\xa4\xaa\xe0\xa4\xb0 \xe0\xa4\x89\xe0\xa4\xa0\xe0\xa5\x87\xe0\xa4\x82 \xe0\xa4\x94\xe0\xa4\xb0 \xe0\xa4\x9a\xe0\xa4\xb2\xe0\xa5\x87\xe0\xa4\x82-\xe0\xa4\xab\xe0\xa4\xbf\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x82'}, {u'text': '\xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xaa\xe0\xa4\xa1\xe0\xa4\xbc\xe0\xa5\x8b\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xb8\xe0\xa5\x87 \xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xb2\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa4\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xae\xe0\xa4\xaf \xe0\xa4\x9a\xe0\xa4\xb2 \xe0\xa4\x95\xe0\xa4\xb0 \xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82'}, {u'text': '\xe0\xa4\x95\xe0\xa4\xbf\xe0\xa4\xb8\xe0\xa5\x80 \xe0\xa4\xae\xe0\xa4\xbf\xe0\xa4\xa4\xe0\xa5\x8d\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xb8\xe0\xa4\xbe\xe0\xa4\xa5 \xe0\xa4\xb0\xe0\xa5\x8b\xe0\xa4\x9c\xe0\xa4\xbe\xe0\xa4\xa8\xe0\xa4\xbe \xe0\xa4\xb8\xe0\xa5\x81\xe0\xa4\xac\xe0\xa4\xb9 \xe0\xa4\x9f\xe0\xa4\xb9\xe0\xa4\xb2\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\xaf\xe0\xa5\x8b\xe0\xa4\x9c\xe0\xa4\xa8\xe0\xa4\xbe \xe0\xa4\xac\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82'}, {u'text': '\xe0\xa4\x85\xe0\xa4\xaa\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\xb2\xe0\xa4\x95\xe0\xa5\x8d\xe0\xa4\xb7\xe0\xa5\x8d\xe0\xa4\xaf \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\x86\xe0\xa4\xa7\xe0\xa5\x87 \xe0\xa4\x9a\xe0\xa4\xb0\xe0\xa4\xa3\xe0\xa5\x8b\xe0\xa4\x82 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xa6\xe0\xa5\x8b\xe0\xa4\xaa\xe0\xa4\xb9\xe0\xa4\xb0 \xe0\xa4\xa4\xe0\xa4\x95 \xe0\xa4\x95\xe0\xa4\xb0\xe0\xa4\xa8\xe0\xa5\x87 \xe0\xa4\x95\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa5\x8b\xe0\xa4\xb6\xe0\xa4\xbf\xe0\xa4\xb6 \xe0\xa4\x95\xe0\xa4\xb0\xe0\xa5\x87\xe0\xa4\x82'}]

在上面的输出中,第一行是包含字符串ID的字典对象的列表 .

下面我打印字符串的编码和从字典中获取的字符串的值 . 所以以 ENCODING: 开头的行显示了在 DICT ITEM 142 开头的行下方显示的字符串的编码

最后,显示具有替换值的列表 .

预期的产出是:

return_list [{u'text': 'डिनर के बाद चहलकदमी को पारिवारिक परंपरा बनाएं'}, {u'text': 'प्रत्येक 30 मिनट पर उठें और चलें-फिरें'}, {u'text': 'किसी पड़ोसी से मिलने जाते समय चल कर जाएं'}, {u'text': 'किसी मित्र के साथ रोजाना सुबह टहलने की योजना बनाएं'}, {u'text': 'अपने लक्ष्य के आधे चरणों को दोपहर तक करने की कोशिश करें'}]

我的问题是打印字典元素会正确打印印地语字符串,但是一旦我将它们附加到列表并打印列表,它就会输出utf文字 . 请提出一些解决方案 .

1 回答

  • 1

    您的字典包含UTF-8字节的字符串 . 在调试输出中表示此类字节时,Python 2将始终使用 \xhh ,包括显示字典内容时(使用 repr() 函数输出) .

    Python这样做是为了使您的调试输出适合于通过复制和粘贴到任何Python解释器会话或新脚本来重新创建原始值,而不必担心除支持ASCII之外的终端或编辑器配置 .

    在交互式会话中回显字符串对象时,您会看到同样的事情:

    >>> text = 'डिनर के बाद चहलकदमी को पारिवारिक परंपरा बनाएं'
    >>> print text
    डिनर के बाद चहलकदमी को पारिवारिक परंपरा बनाएं
    >>> text
    '\xe0\xa4\xa1\xe0\xa4\xbf\xe0\xa4\xa8\xe0\xa4\xb0 \xe0\xa4\x95\xe0\xa5\x87 \xe0\xa4\xac\xe0\xa4\xbe\xe0\xa4\xa6 \xe0\xa4\x9a\xe0\xa4\xb9\xe0\xa4\xb2\xe0\xa4\x95\xe0\xa4\xa6\xe0\xa4\xae\xe0\xa5\x80 \xe0\xa4\x95\xe0\xa5\x8b \xe0\xa4\xaa\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\xb5\xe0\xa4\xbe\xe0\xa4\xb0\xe0\xa4\xbf\xe0\xa4\x95 \xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa4\x82\xe0\xa4\xaa\xe0\xa4\xb0\xe0\xa4\xbe \xe0\xa4\xac\xe0\xa4\xa8\xe0\xa4\xbe\xe0\xa4\x8f\xe0\xa4\x82'
    

    如果必须将原始字节直接打印到终端,则必须自己进行格式化以避免输出 repr() 输出 .

相关问题