我有一个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
答案 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'}