我如何打印从csv文件行列表中的单个字符串?



对于下面的csv文件,我试图使用第3至第6行(又名第2至5行)的第一项作为一个函数的输入,所以我需要能够调用它们。然后我需要对第8行和第9行的第一项做同样的处理。我该怎么做呢?

NETFLIX
PROGRAMS
Halt and Catch Fire,Drama,Christopher Cantwell and Christopher C. Rogers,2014
Arrival,Drama,Denis Villeneuve,2016
Us,Horror,Jordan Peele,2018
Matrix; The,Sci-Fi,The Wachowskis,1999
SUBSCRIBERS
John,john123,password
Farah,f206,abcdef
到目前为止,我将每行放入字符串列表中,当我调用line[0]来给出列表中的第一项时,我得到了这个:
PROGRAMS
Halt and Catch Fire
Arrival
Us
Matrix; The
SUBSCRIBERS
John
Farah

这是我想要的,但我不希望所有的行同时出现。我希望能够同时调用第3到第6行,然后调用第8和第9行来得到这个:

Halt and Catch Fire
Arrival
Us
Matrix; The

John
Farah

这样做的目的是为了使用这些行的元素作为我创建的函数的参数。

仅用一列分隔列表的行。您可以根据最后看到的单行列来存储列表。注意,如果字典中的键不存在,defaultdict将创建其默认对象(在本例中为空列表)。避免在追加之前必须检查键是否已经存在于字典中。

import csv
from collections import defaultdict
with open('input.csv','r',newline='') as f:
r = csv.reader(f)
data = defaultdict(list)
next(f) # skip first row
for row in r:
if len(row) == 1: # single column, remember the list name
key = row[0]
else:
data[key].append(row[0]) # append to last list remembered.
print(data)
print(data['PROGRAMS'])
print(data['SUBSCRIBERS'])

输出:

defaultdict(<class 'list'>, {'PROGRAMS': ['Halt and Catch Fire', 'Arrival', 'Us', 'Matrix; The'], 'SUBSCRIBERS': ['John', 'Farah']})
['Halt and Catch Fire', 'Arrival', 'Us', 'Matrix; The']
['John', 'Farah']

然后你可以在其中一个列表上迭代调用一些函数:

for program in data['PROGRAMS']:
some_function(program)

最新更新