我已提取從csv文件中的數據,使用該代碼從特定的行和列開始提取數據所需量:讀CSV文件,使用Python
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())
filtered_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個字段EMPTY,則暫停該進程。 ,而且必須保證這樣的:提前爲幫助
[('Dates', 'Rates', 'Items'),
('2013/03/07', '$114', 'Tissot'),
('2013/03/07', '$140', 'Adidas'),
('2013/03/07', '$344', 'Nike')]
感謝。
見一個更好的解決方案,它使用對方的回答'任何()'不是字符串的加入。我的測試表明,使用'any()'的代碼比使用join()代碼實現上述測試用例的代碼少40%。 – Simon 2013-03-06 19:17:58