我正在嘗試將包含藏語單詞的字典檔案寫入 yaml 格式。問題是我在撰寫 yaml 檔案時無法對檔案進行編碼/解碼。
這是代碼:
with open('tibetan_dict.yml', 'w', encoding='utf-8') as outfile:
yaml.dump(tibetan_dict, outfile, default_flow_style=False)
tibetan_dict 包含:
{'???': '?.?????????????????????????? ????????????????????????????????????????????.???????????????????????????????? ?????????????????????',
'????': '?????????????????',
'??????': '?????????????????????????????????????? }
輸出我得到:
"\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"
uj5u.com熱心網友回復:
如果要在 yaml 輸出中使用非 ascii 字符,則需要通過allow_unicode=Truewhen 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"
請注意,這兩個都是有效的yaml,并且將反序列化為相同的值。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/518168.html
