使用JSON中的新行保存python变量,并使用漂亮的打印

时间:2017-03-03 14:34:06

标签: python json pretty-print

我正在使用Python中的CSV文件阅读此文本。

Hi there,



This is a test.

并将其存储到变量text

我正在尝试使用json.dump()在JSON文件中编写此变量,但它正在转换为:

'\ ufeffHi那里,\ n \ n \ xa0 \ n \ n这是一个测试。

如何让我的JSON文件看起来像下面那样?:

{
  "text": "Hi there,



    This is a test."
}

2 个答案:

答案 0 :(得分:2)

JSON不允许真正的换行符。如果你仍然想要使用它们,你将不得不制作自己的" json"作家。

编辑:这里的函数将采用python dict(你可以使用json.loads()获得)并按照你需要的方式打印它:

def print_wrong_json(dict_object):
    print '{'
    print ',\n'.join(['"{}": "{}"'.format(key, dict_object[key]) for key in dict_object])
    print '}'

答案 1 :(得分:2)

嗯,可以完成,user1308345 shows in his answer但是it wouldn't be valid JSON anymore,并且在反序列化JSON时可能会遇到问题。

但是如果你真的想要这样做,并且仍然希望拥有有效的JSON,你可以拆分字符串(并删除新行)并将它们序列化为一个数组,就像在这个答案https://stackoverflow.com/a/7744658/1466757中建议的那样

然后你的JSON看起来与此类似

{
 "text": [
    "Hi there,",
    "",
    "",
    "",
    "this is a test."
  ]
}

反序列化之后,你必须把换行符放回去。