我已经从 csv 文件中提取了数据,使用以下代码从特定的行和列开始:
def csvread(csvpath, filtered_dict):
rdr = csv.reader(open(csvpath, 'rb'))
columns = [{key:row[pos[0][1]] for key,pos in filtered_dict.items()} for row in rdr]
# finally trim to desired row startpoints:
data = {key:[col[key] for col in columns[pos[0][0]:]] for key,pos in filtered_dict.items()}
return zip(*data.values())
filters_dict 看起来像这样:
{'Date': [(21, 5)], 'Rate': [(21, 4)], 'Item': [(21, 2)]}
但它会将数据提取到 csv 文件的末尾,这会导致处理所需数据时出现问题。像这样:
[('Dates', 'Rates', 'Items'),
('2013/03/07', '$114', 'Tissot'),
('2013/03/07', '$140', 'Adidas'),
('2013/03/07', '$344', 'Nike'),
('', '', ''),
('', '', ''),
('','The rate for EVERY item is FIXED', 'No RETURN or EXCHANGE!')]
现在我想要的是如果函数发现所有 3 个字段都为空,则暂停该过程。并且必须是这样的结果:
[('Dates', 'Rates', 'Items'),
('2013/03/07', '$114', 'Tissot'),
('2013/03/07', '$140', 'Adidas'),
('2013/03/07', '$344', 'Nike')]
提前感谢您的帮助。