从CSV文件数据动态创建列表列表

时间:2017-11-01 19:26:25

标签: python list csv

我有一个CSV文件,我希望reading作为配置文件来创建list lists来存储数据。

我的CSV文件格式为:

list_name, search_criteria  
channel1, c1  
channel2, c2  
channel3, c3

我想在read文件中CSV并动态创建list lists list_name CSV,因为它可能随着时间的推移而增长和缩小我总是想要list_name文件中定义的任何内容。

CSV文件中的mainLists[]是"前缀"到我想要动态创建的列表名称。例如,读入" channel1"," channel2"," channel3"从csv文件中创建一个列表,其中" mainList []"是核心列表,其中包含3个名为" channel1_channel_list"," channel2_channel_list"," channel3_cannel_list"的列表。

我意识到我的命名惯例可以简化,所以请不要理会。一旦我有了可行的解决方案,我就会留下来。我将使用搜索条件填充mainList = [] with open('list_config.csv') as input_file: dictReader = csv.DictReader(input_file) for row in dictReader: listName = row['list_name'] + '_channel_list' 中的列表。

这是我不完整的代码:

M

2 个答案:

答案 0 :(得分:2)

以下是如何阅读数据并从中创建字典。

除了从文件中读取数据外,csv读者还可以从字符串列表中读取数据,这对于像这样的代码来说非常方便。使用您的数据,您需要指定skipinitialspace=True以跳过逗号后的空格。

import csv

data = '''\
list_name, search_criteria
channel1, c1
channel2, c2
channel3, c3
'''.splitlines()

dictReader = csv.DictReader(data, skipinitialspace=True)

main_dict = {}
for row in dictReader:
    name = row['list_name'] + '_channel_list'
    criteria = row['search_criteria']
    main_dict[name] = criteria

# Print data sorted by list_name
keys = sorted(main_dict)
for k in keys:
    print(k, main_dict[k])

<强>输出

channel1_channel_list c1
channel2_channel_list c2
channel3_channel_list c3

此代码比Joe Iddon的版本稍微复杂一点,但如果每行有两个以上的条目,它会更容易适应。 OTOH,如果你每行只有两个条目,那么你应该使用Joe更简单的方法。

答案 1 :(得分:1)

加载file with中的statement,然后使用csv.reader returns reader object。然后,可以将其转换为dictionary

,然后将其转换为dict()
with open('list_config.csv') as input_file:
    dictionary = dict(csv.reader(input_file))

现在,dictionary的内容是:

{'channel3': ' c3', 'channel1': ' c1', 'channel2': ' c2'}