使用Python将字典转换为CSV格式

使用Python将字典转换为CSV格式,python,csv,Python,Csv,我有一组迭代过的文件,并制作了一个关键字字典:文件名、短语。我想输出一个csv文件,看起来像这样 **创建的字典示例** {'BatMan': [('1.txt', 'I am Bat-Man'), ('2.txt', 'Bat-man is awesome')], 'Flash': [('1.txt', 'The Flash is awesome'), ('1.txt', ' The Flash is only in txt 1 though'),]}

我有一组迭代过的文件,并制作了一个关键字字典:文件名、短语。我想输出一个csv文件,看起来像这样

**创建的字典示例**

{'BatMan': [('1.txt', 'I am Bat-Man'),
         ('2.txt', 'Bat-man is awesome')],
 'Flash': [('1.txt', 'The Flash is awesome'),
         ('1.txt', ' The Flash is only in txt 1 though'),]}
我将这个dict设置为我的字典,并有以下代码

my_dict= dict(**out)
with open('MYTESTER.csv', 'wb') as f: 

    wcsv = csv.writer(f) 
    wcsv.writerow([ 'word', 'context'])
    for key, value in my_dict.items():
        wcsv.writerow( [key, value] )
语境 蝙蝠侠1.txt,我是蝙蝠侠 蝙蝠侠2.txt,蝙蝠侠太棒了 Flash 1.txt,“Flash太棒了 Flash 1.txt,但Flash仅在txt 1中

但我得到的是 语境 蝙蝠侠1.txt,我是蝙蝠侠,2.txt,蝙蝠侠太棒了 Flash 1.txt,“Flash非常棒,1.txt,但是Flash只在txt 1中


我确信这在我指定writerow的过程中是一个简单的错误,但我一直在查看文档,我不明白我做错了什么。为什么要这样打印?我如何修复它?

对于循环,您需要两个

  • 一个
    用于
    循环,用于字典项
  • 列表中每个不同的项目都有一个
    循环

    • 发生这种情况的原因是,您试图将多维列表粘贴到单个csv单元格中。当这种情况发生时,csv模块不知道该做什么,所以它只是将条目作为字符串打印出来。要解决这个问题,您必须添加另一列并合并两个for循环。一个用于dictionary key:value对,另一个用于dictionary值中的元组项

      请尝试下面的示例脚本:

      with open("MYTESTER.csv", "wb") as f:
          wcsv = csv.writer(f)
          wcsv.writerow(['word', 'context', 'text'])
          for key, value in dictionary.items():
              for item in value: 
                  wcsv.writerow([key, item[0], item[1]])
      
      这将生成如下所示的csv文件:

      word,   context,    text
      BatMan, 1.txt,  I am Bat-Man
      BatMan, 2.txt,  Bat-man is awesome
      Flash,  1.txt,  The Flash is awesome
      Flash,  1.txt,   The Flash is only in txt 1 though
      
      此词典每行至少有三项,因此需要三列来存储它