我試圖讀取一個csv文件並從中提取所需的數據。我的代碼如下所示。閱讀csv文件時跳過第一列Python
import csv
file = "sample.csv"
def get_values_flexibly(file, keyword):
def process(func):
return set([func(cell)] + [func(row[index]) for row in reader])
with open(file, 'r') as f:
reader = csv.reader(f)
first_row = reader.next()
if keyword in first_row:
return str(list(set([row[first_row.index(keyword)] for row in reader])))
for index, cell in enumerate(reader.next()):
if cell.endswith(' ' + keyword):
return str(list(set(process(lambda cell: cell[:-len(keyword) - 1]))))
elif cell.split(':')[0].strip() == keyword:
return str(list(set(process(lambda cell: cell.split(':')[1].strip()))))
print get_values_flexibly(file, 'data')
其中sample.csv看起來像下面
sample.csv
h1,h2,h3
a data,data: abc,tr
b data,vf data, gh
k data,grt data, ph
我想從輸出排除第一列。我目前的輸出是['a','k','b']
,但我希望它是['abc', 'vf', 'grt']
。我怎樣才能實現這一點使用CSV閱讀器?
編輯 - 我有多個文件。每個文件可能有不同的標題和列數也不相同。我想要一個適用於所有文件的腳本。另外,第一列的標題總是相同的,例如「sample_column」。我想從標題爲「sample_column」的列中跳過數據。
是您的關鍵字總是要'data'? – BorrajaX 2014-12-02 22:28:50
@BorrajaX號不同。 – abn 2014-12-02 22:29:22
你可以(或者介意)使用正則表達式來刪除你的單元格的「關鍵字」塊? – BorrajaX 2014-12-02 22:32:23