[英]dump json into yaml
{
"main": {
"title": "今日は雨が降って",
"description": "今日は雨が降って"
}
}
pyyaml.dump()
有一個allow_unicode
選項,默認為None
(輸出中的所有非 ASCII 字符都被轉義)。 如果allow_unicode=True
,那么它會寫入原始 Unicode 字符串。
yaml.dump(data, ff, allow_unicode=True)
您可以轉儲不帶編碼的 JSON,如下所示:
json.dump(data, outfile, ensure_ascii=False)
這對我有用:
#!/usr/bin/env python
import sys
import json
import yaml
print(yaml.dump(json.load(open(sys.argv[1])), default_flow_style=False))
所以我們正在做的是:
In [1]: import json, yaml
In [2]: with open('test.json') as js:
...: data = json.load(js)[u'main']
...:
In [3]: with open('test.yaml', 'w') as yml:
...: yaml.dump(data, yml, allow_unicode=True)
...:
In [4]: ! cat test.yaml
{!!python/unicode 'description': 今日は雨が降って, !!python/unicode 'title': 今日は雨が降って}
In [5]: with open('test.yaml', 'w') as yml:
...: yaml.safe_dump(data, yml, allow_unicode=True)
...:
In [6]: ! cat test.yaml
{description: 今日は雨が降って, title: 今日は雨が降って}
>>> import json
>>> j = '{ "main": { "title": "今日は雨が降って", "description": "今日は雨が降って" }}'
>>> s = json.loads(j)
>>> t = json.dumps(s)
>>> j
'{ "main": { "title": "\xe4\xbb\x8a\xe6\x97\xa5\xe3\x81\xaf\xe9\x9b\xa8\xe3\x81\x8c\xe9\x99\x8d\xe3\x81\xa3\xe3\x81\xa6", "description": "\xe4\xbb\x8a\xe6\x97\xa5\xe3\x81\xaf\xe9\x9b\xa8\xe3\x81\x8c\xe9\x99\x8d\xe3\x81\xa3\xe3\x81\xa6" }}'
>>> t
'{"main": {"description": "\\u4eca\\u65e5\\u306f\\u96e8\\u304c\\u964d\\u3063\\u3066", "title": "\\u4eca\\u65e5\\u306f\\u96e8\\u304c\\u964d\\u3063\\u3066"}}'
>>> s == json.loads(t)
True
我做的很簡單:
#!/usr/bin/env python
import sys
import json
import yaml
yaml.safe_dump(json.load(sys.stdin), sys.stdout, default_flow_style=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.