【问题标题】:convert list of dict to CSV string using dict_keys使用 dict_keys 将 dict 列表转换为 CSV 字符串
【发布时间】:2020-04-27 19:31:48
【问题描述】:

我正在尝试将 dict 列表转换为 lambda 函数的 csv 字符串。 我在下面编写的代码将数据作为键值。我正在尝试重新编写它,以便它基于 dict_keys 工作。

import io
import csv

output = io.StringIO()
csvdata = [{"fruit": "apple", "count": "1", "color": "red"},{"fruit": "banana", "count": "2", "color": "yellow"}]
writer = csv.writer(output, quoting=csv.QUOTE_NONNUMERIC)
    for i in csvdata:
        for key, value in i.items():
            writer.writerow([key, value])
convertedtocsv = output.getvalue()

输出:'"fruit","apple"\r\n"count","1"\r\n"color","re​​d"\r\n"fruit","banana"\r\n "计数","2"\r\n"颜色","黄色"\r\n'

fruit  apple
count  1 
color  red
fruit  banana
count  2
color  yellow

我想要以下格式的数据

fruit   count  color
apple   1      red
banana  2      yellow

我知道这可以在 pandas 中使用 .to_csv 方法来实现。但我只是想在没有 pandas 或任何 3rd 方库的情况下尝试一下。

感谢任何帮助。谢谢!

【问题讨论】:

    标签: python csv dictionary


    【解决方案1】:

    csv.DictWriter

    csv 模块提供了一个 DictWriter 类,它最适合我们处理记录,即需要写入 csv 文件的字典列表

    fields = ['fruit', 'count', 'color'] 
    writer = csv.DictWriter(output, fieldnames=fields, delimiter='\t')
    writer.writeheader()
    writer.writerows(csvdata)
    

    print(output.getvalue())
    
    fruit   count   color
    apple   1       red
    banana  2       yellow
    

    【讨论】:

      【解决方案2】:

      你可以先写标题,然后为每一行写数据。

      writer.writerow(csvdata[0].keys())
      for i in csvdata:
          writer.writerow(i.values())
      
      convertedtocsv = output.getvalue()
      print(convertedtocsv)
      

      【讨论】:

        猜你喜欢
        • 2010-11-17
        • 1970-01-01
        • 2010-12-25
        • 2018-08-04
        • 2020-01-03
        • 2018-08-30
        • 1970-01-01
        • 2011-05-30
        相关资源
        最近更新 更多