我正在使用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 回答
您的字典包含UTF-8字节的字符串 . 在调试输出中表示此类字节时,Python 2将始终使用
\xhh
,包括显示字典内容时(使用repr()
函数输出) .Python这样做是为了使您的调试输出适合于通过复制和粘贴到任何Python解释器会话或新脚本来重新创建原始值,而不必担心除支持ASCII之外的终端或编辑器配置 .
在交互式会话中回显字符串对象时,您会看到同样的事情:
如果必须将原始字节直接打印到终端,则必须自己进行格式化以避免输出
repr()
输出 .