将具有不同结构的csv导入字典

2024-05-23 16:48:46 发布

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

我不太确定如何解决我的问题。我有一个csv文件,其结构如下

def1_begin,,,,
key1, value1,,,
key2, value2,,,
...
def1_end,,,,
def2_begin,,,
key3, value3,,,
key4, value4,,,
...
def2_end,,,,
global1_begin,,,,
key5, xyz5, xya5, xyz1, xss5
key6, dsa6, fdf6, fdf6, sda5
global1_end

我在文件中把这些开始行和结束行分开。现在,我如何才能最好地将其读入字典,以便使用程序中的参数。最后,这是我的主程序的信息文件


Tags: 文件csv结构endkey2key1beginvalue1
1条回答
网友
1楼 · 发布于 2024-05-23 16:48:46

我的建议:

output_dict = {}  # here will you get all values
_file_part = None  # value storing part of the file that you are parsing

with open("file.csv", "r") as file:
    for line in file:
        line = line.rstrip("\n").rstrip(",")  # get rid of line break and commas at the end of line
        # check whether you start to read a new data block
        if line.endswith("_begin"):
            _file_part = line
        # check whether you end to read a data block
        elif line.endswith("_end"):
            _file_part = None
        # put data into data block
        else:
            key, *values = line.split(", ")
            output_dict.setdefault(_file_part, {}).update({key: values})

您将把所有数据输入输出dict变量

使用此文件作为输入:

def1_begin,,,,
key1, value1,,,
key2, value2,,,
def1_end,,,,
def2_begin,,,
key3, value3,,,
key4, value4,,,
def2_end,,,,
global1_begin,,,,
key5, xyz5, xya5, xyz1, xss5
key6, dsa6, fdf6, fdf6, sda5
global1_end

我提取了以下值以输出:

{'def1_begin': {'key1': ['value1'], 'key2': ['value2']},
 'def2_begin': {'key3': ['value3'], 'key4': ['value4']},
 'global1_begin': {'key5': ['xyz5', 'xya5', 'xyz1', 'xss5'],
                   'key6': ['dsa6', 'fdf6', 'fdf6', 'sda5']}}

附言:若变量的位置很重要,你们可以订购dict而不是dict

如果这是你需要的,请告诉我

相关问题 更多 >