繁体   English   中英

将 CSV 字符串转换为字典

[英]Converting a CSV string into a dictionary

对于一个项目,我试图在对文件进行特定修改后将我的 csv 文件转换为字典。 所以,

df = pd.read_csv('')
for col in df:
    if col[:10] == 'Warehouse.':
        stripped = col[10:]
        if stripped[:8] != 'timedata':
            print('\n',col)

我正在尝试将生成的文件转换为字典,但卡住了。 我努力了:

  1. 通过使用 line.strip("\n") 删除尾随换行符来迭代文件 (df),然后使用 line.split(",") 拆分结果字符串以获得键和值

  2. 在我对文件进行更改之前使用 DictReader class,尽管我一直收到错误消息说我不能这样做

将此修改后的 csv 转换为字典的最佳方法是什么?

谢谢!

也称为 map 的字典是键值对数据结构,那么您希望字典中的键和值到底是什么?

我将假设键是行号,值是该行中的内容,但是该行本身在单元格中包含很多值,因此 map 中的值最好是包含该行中的单元格的数组.

为此,让我们回顾一下在 CSV(逗号分隔值)中,行由作为换行符的 '\n' 分隔,并且在每一行中,值由 ',' 逗号分隔,因此得名。

file_path = "<file_path.csv>"
file = open(file_path,'r') #open the file in read mode


data = file.read() #read the file data
file.close() #close the file

data = data.split('\n') #split the data by new line character to get each line as a list element
data.pop() #remove the last empty row

dict_data = {}
for i in range(len(data)):
    data[i] = data[i].split(',') #split each line by comma to get each cell as a list element
    dict_data[i+1] = data[i]

# now data is a list of lists or a 2D array where each element is a list of cells

现在您可以使用 dict_data 为其指定行号,结果将是一个数组,其中每个元素都包含 CSV 中的单元格数据

或者您可以只使用数据二维数组而不是 dict_data,但请确保使用行号 + 1,因为 arrays 或列表是从零开始的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM