首页 > 解决方案 > 使用 csv 文件中的行号创建字典 [Python]

问题描述

我有一个 CSV 文件,其中包含 60 名参与者的调查数据。第一列是参与者的编号,每个数字对应于从该参与者收集的所有数据。它看起来像:

参加人数:1,性别:女,学习程度:研究生

我想创建一个字典,其中键是参与者编号,值是包含所有数据的整个行,如下所示:

{1:女,研究生,美国,是,不,不,是,是,不...}等等。我仍然是一个新手,到目前为止,这是我尝试过的:

with open('surveys.csv', 'r') as f:
    reader = csv.reader(f, delimiter=' ')
    with open('new_surveys.csv', mode='w') as outfile:
            writer = csv.writer(outfile)
            mydict = {rows[0]:rows for rows in reader}
            print(mydict)

但这会打印出类似的内容:

{'\ufeff"': ['\ufeff"'], '参与者/问题","1.': ['参与者/问题","1.', '性别'], ',2.': [ ',2.', 'Level', 'of', 'study'],} 目前对我来说没有任何意义......

谢谢!

编辑:

这是一整行数据:

一整行数据,还有 59 个数据,但它们看起来都一样,唯一的区别是是/否或一天中的时间

标签: pythonpython-3.xcsvdictionarymultidimensional-array

解决方案


你可以试试这个?

import csv
with open('surveys.csv', 'r') as f:
    reader = csv.reader(f, delimiter=' ') 
    mydict={}
    iterreader = iter(reader)
    next(iterreader)
    for row in iterreader:
        elementsList=row[0].split("\t")
        nonEmptyElements=[]
        for element in elementsList[1:]:
            print(element)          
            if(not element.strip()==""):
                nonEmptyElements.append(element)
        valuesList=",".join(nonEmptyElements)
        mydict[elementsList[0]]=valuesList
print(mydict)  

我的 CSV 看起来像这样

Participant Name    Gender
1   Rupin   Male
2   Poonam  Female
3   Jeshan  Male

该代码避免使用第一行。

我的输出看起来像这样

{'1': 'Rupin,Male', '2': 'Poonam,Female', '3': 'Jeshan,Male'}

推荐阅读