Python list printing utf-8 literals for the contained dictionary elements with HINDI text -
i working python 2.7 , beginner. facing problem in printing list dict objects containing hindi strings.
i have list containing several dictionary objects here:
[{u'text': u'+4a41+'}, {u'text': u'+4a42+'}, {u'text': u'+4a43+'}, {u'text': u'+4a44+'}, {u'text': u'+4a45+'}] each contained object 1 element , corresponding key 'text', there 'string id'. in list above, first dict element, string id 4a41.
i read these string ids , lookup in dictionary find string corresponding id , replace id string. dictionary contains hindi strings. when fetch , print string values, printed correctly when add them dict objects , put them in list, printing list shows utf characters , not actual hindi text.
i posting sample output below:
[{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'}] in output above, first line list containing dictionary object string ids.
below i'm printing encoding of string , value of string fetched dictionary. lines starting encoding: show encoding of string displayed in line below starting dict item 142
in end, list replaced values shown.
the expected output is:
return_list [{u'text': 'डिनर के बाद चहलकदमी को पारिवारिक परंपरा बनाएं'}, {u'text': 'प्रत्येक 30 मिनट पर उठें और चलें-फिरें'}, {u'text': 'किसी पड़ोसी से मिलने जाते समय चल कर जाएं'}, {u'text': 'किसी मित्र के साथ रोजाना सुबह टहलने की योजना बनाएं'}, {u'text': 'अपने लक्ष्य के आधे चरणों को दोपहर तक करने की कोशिश करें'}] my question printing dictionary elements prints hindi strings correctly once append these list , print list, prints utf literals. please suggest solution.
your dictionary contains strings utf-8 bytes. python 2 use \xhh when representing such bytes in debug output, including when showing dictionary contents (for repr() function output used).
python make debug output suitable recreating original value copying , pasting python interpreter session or new script, while not having worry terminal or editor configurations beyond supporting ascii.
you see same thing when echoing string object in interactive session:
>>> 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' if must print original bytes directly terminal, don't print dictionary. you'll have own formatting avoid being given repr() output.
Comments
Post a Comment