【问题标题】:how to convert a json type data into csv format如何将json类型的数据转换成csv格式
【发布时间】:2019-03-26 06:32:32
【问题描述】:

关于如何在python中将如下数据转换为csv文件的任何建议:

[{
  'name': 'a',
  'url': 'url1'
}, 
{
  'name': 'b',
  'url': 'url2'
}, 
{
  'name': 'c',
  'url': 'url3'
}]

谢谢。

【问题讨论】:

  • 你试过什么?
  • 好吧,我想说这取决于你可以做出什么样的假设。你能假设输入总是包含一个字典列表,这些字典总是包含一个'name'键和一个'url'键吗?如果是这样,那就很简单了。只需遍历列表,提取并打印字典中每个键的值,用逗号分隔,并以换行符结尾。如果您必须允许包含不受约束的键值的任意 dicts,那么您的任务就会困难得多。有图书馆可以为你做这件事。 - 啊哈!我刚刚看到有关现有 SO 帖子的评论。有很多东西可以咀嚼。
  • 实际上,该帖子并不是完全重复的,因为您提供的输入字符串不是 JSON。它也不是一个合适的 Python 常量。这并不意味着它不是有效的格式。这只是意味着您将很难找到一个固定的例程来阅读它。如果该输入中的每个键和值都是先前定义的变量,那么它将是有效的 Python。要成为 JSON,您需要在映射中的所有键和值周围加上双引号。在不定义一堆变量的情况下使其成为有效的 Python 结构也是如此。

标签: python format-conversion


【解决方案1】:

这并不像我在第一条评论中所说的那么简单。当我这么说时,我没有意识到您的输入字符串不是任何标准格式,使用 JSON 库或通过解释为 Python 代码很容易阅读。

这是一个非常严格的答案,它只适用于非常特定形式的输入字符串:

data = "[{name:a,url:url1},{name:b,url:url2},{name:c,url:url3}]"
entries = re.findall("{([^:]+):([^,]+),([^:]+):([^}]+)", data)
with open("/tmp/output.csv", "w") as f:
    f.write("Name,Url\n")
    for entry in entries:
        f.write(entry[1] + ',' + entry[3] + '\n')

生成的文件内容:

Name,Url
a,url1
b,url2
c,url3

【讨论】:

  • 酷。如果你喜欢,你能“检查”答案吗:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-26
  • 1970-01-01
  • 2022-11-18
相关资源
最近更新 更多