Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

how to decode file when writing in yaml format

I am trying to write a dictionary file that contains Tibetan language word into yaml format. Problem is i couldn’t encode/decode the file when writing the yaml file.

Here is code :

    with open('tibetan_dict.yml', 'w', encoding='utf-8') as outfile:
        yaml.dump(tibetan_dict, outfile, default_flow_style=False)

tibetan_dict contains:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

{'ཀ་ཅ': '༡.་ནོར་རྫས་ཀྱི་སྤྱི་མིང་སྟེ། ཀ་ཅ་གསོག་འཇོག་ཀ་ཅས་ཚིམ་པར་བྱེད་ཅེས་པ་ལྟ་བུ།༢.འཚོ་བའི་ཡོ་བྱད་ཀྱི་སྤྱི་མིང་སྟེ། སྣོད་ཀ་ཅ་ཞེས་པ་ལྟ་བུ།', 
'ཀ་ཅི': 'རས་ཆ་ཞིག་གི་མིང་།', 
'ཀ་ཏོ་ར': 'གཞོང་བ་ལྟ་བུའི་ཟས་སྣོད་ཅིག་གི་མིང་སྟེ། }

OUTPUT i am getting :

"\u0F40\u0F0B\u0F45": "\u0F21.\u0F0B\u0F53\u0F7C\u0F62\u0F0B\u0F62\u0FAB\u0F66\u0F0B\
  \u0F40\u0FB1\u0F72\u0F0B\u0F66\u0FA4\u0FB1\u0F72\u0F0B\u0F58\u0F72\u0F44\u0F0B\u0F66\
  \u0F9F\u0F7A\u0F0D \u0F40\u0F0B\u0F45\u0F0B\u0F42\u0F66\u0F7C\u0F42\u0F0B\u0F60\u0F47\
  \u0F7C\u0F42\u0F0B\u0F40\u0F0B\u0F45\u0F66\u0F0B\u0F5A\u0F72\u0F58\u0F0B\u0F54\u0F62\
  \u0F0B\u0F56\u0FB1\u0F7A\u0F51\u0F0B\u0F45\u0F7A\u0F66\u0F0B\u0F54\u0F0B\u0F63\u0F9F\
  \u0F0B\u0F56\u0F74\u0F0D\u0F22.\u0F60\u0F5A\u0F7C\u0F0B\u0F56\u0F60\u0F72\u0F0B\u0F61\
  \u0F7C\u0F0B\u0F56\u0FB1\u0F51\u0F0B\u0F40\u0FB1\u0F72\u0F0B\u0F66\u0FA4\u0FB1\u0F72\
  \u0F0B\u0F58\u0F72\u0F44\u0F0B\u0F66\u0F9F\u0F7A\u0F0D \u0F66\u0FA3\u0F7C\u0F51\u0F0B\
  \u0F40\u0F0B\u0F45\u0F0B\u0F5E\u0F7A\u0F66\u0F0B\u0F54\u0F0B\u0F63\u0F9F\u0F0B\u0F56\
  \u0F74\u0F0D"
"\u0F40\u0F0B\u0F45\u0F72": "\u0F62\u0F66\u0F0B\u0F46\u0F0B\u0F5E\u0F72\u0F42\u0F0B\
  \u0F42\u0F72\u0F0B\u0F58\u0F72\u0F44\u0F0B\u0F0D"

>Solution :

If you want non-ascii characters in the yaml output, you need to pass allow_unicode=True when dumping.

>>> yaml.dump(tibetan_dict)
'"\\u0F40\\u0F0B\\u0F45": "\\u0F21.\\u0F0B\\u0F53\\u0F7C\\u0F62\\u0F0B\\u0F62\\u0FAB\\u0F66\\u0F0B\\\n  \\u0F40\\u0FB1\\u0F72\\u0F0B\\u0F66\\u0FA4\\u0FB1\\u0F72\\u0F0B\\u0F58\\u0F72\\u0F44\\u0F0B\\u0F66\\\n  \\u0F9F\\u0F7A\\u0F0D \\u0F40\\u0F0B\\u0F45\\u0F0B\\u0F42\\u0F66\\u0F7C\\u0F42\\u0F0B\\u0F60\\u0F47\\\n  \\u0F7C\\u0F42\\u0F0B\\u0F40\\u0F0B\\u0F45\\u0F66\\u0F0B\\u0F5A\\u0F72\\u0F58\\u0F0B\\u0F54\\u0F62\\\n  \\u0F0B\\u0F56\\u0FB1\\u0F7A\\u0F51\\u0F0B\\u0F45\\u0F7A\\u0F66\\u0F0B\\u0F54\\u0F0B\\u0F63\\u0F9F\\\n  \\u0F0B\\u0F56\\u0F74\\u0F0D\\u0F22.\\u0F60\\u0F5A\\u0F7C\\u0F0B\\u0F56\\u0F60\\u0F72\\u0F0B\\u0F61\\\n  \\u0F7C\\u0F0B\\u0F56\\u0FB1\\u0F51\\u0F0B\\u0F40\\u0FB1\\u0F72\\u0F0B\\u0F66\\u0FA4\\u0FB1\\u0F72\\\n  \\u0F0B\\u0F58\\u0F72\\u0F44\\u0F0B\\u0F66\\u0F9F\\u0F7A\\u0F0D \\u0F66\\u0FA3\\u0F7C\\u0F51\\u0F0B\\\n  \\u0F40\\u0F0B\\u0F45\\u0F0B\\u0F5E\\u0F7A\\u0F66\\u0F0B\\u0F54\\u0F0B\\u0F63\\u0F9F\\u0F0B\\u0F56\\\n  \\u0F74\\u0F0D"\n"\\u0F40\\u0F0B\\u0F45\\u0F72": "\\u0F62\\u0F66\\u0F0B\\u0F46\\u0F0B\\u0F5E\\u0F72\\u0F42\\u0F0B\\\n  \\u0F42\\u0F72\\u0F0B\\u0F58\\u0F72\\u0F44\\u0F0B\\u0F0D"\n"\\u0F40\\u0F0B\\u0F4F\\u0F7C\\u0F0B\\u0F62": "\\u0F42\\u0F5E\\u0F7C\\u0F44\\u0F0B\\u0F56\\u0F0B\\\n  \\u0F63\\u0F9F\\u0F0B\\u0F56\\u0F74\\u0F60\\u0F72\\u0F0B\\u0F5F\\u0F66\\u0F0B\\u0F66\\u0FA3\\u0F7C\\\n  \\u0F51\\u0F0B\\u0F45\\u0F72\\u0F42\\u0F0B\\u0F42\\u0F72\\u0F0B\\u0F58\\u0F72\\u0F44\\u0F0B\\u0F66\\\n  \\u0F9F\\u0F7A\\u0F0D "\n'
>>> yaml.dump(tibetan_dict, allow_unicode=True)
"ཀ་ཅ: ༡.་ནོར་རྫས་ཀྱི་སྤྱི་མིང་སྟེ། ཀ་ཅ་གསོག་འཇོག་ཀ་ཅས་ཚིམ་པར་བྱེད་ཅེས་པ་ལྟ་བུ།༢.འཚོ་བའི་ཡོ་བྱད་ཀྱི་སྤྱི་མིང་སྟེ།\n  སྣོད་ཀ་ཅ་ཞེས་པ་ལྟ་བུ།\nཀ་ཅི: རས་ཆ་ཞིག་གི་མི
 ་།\nཀ་ཏོ་ར: 'གཞོང་བ་ལྟ་བུའི་ཟས་སྣོད་ཅིག་གི་མིང་སྟེ། '\n"

Note that both of these are valid yaml though, and will deserialize to the same value.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading