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

2024-06-25 05:28:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一组文件,我已经迭代了一遍,并制作了一个关键字字典:文件名,短语。我想输出一个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,蝙蝠侠太棒了 flash1.txt,'这个Flash太棒了,1.txt,但是Flash只有txt 1

我确信这是我在指定writerow时犯的一个简单错误,但是我一直在查看文档,我不明白我做错了什么。为什么要印成这样,我怎么修?你知道吗


Tags: 文件csvtheintxt字典ismy
2条回答

您需要两个for循环:

  • 字典项的一个for循环。你知道吗
  • 为列表中的每个不同项提供一个for循环。你知道吗

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

请尝试下面的示例脚本:

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

这本词典每行至少有三个条目,因此需要三列来存储它。你知道吗

相关问题 更多 >