Python - 尝试读取csv文件并使用特定条件输出值

时间:2018-04-21 23:51:27

标签: python

我将开始说明我非常擅长使用Python。我对SQL有一个非常基本的知识,但这是我第一次使用Python。我有一个客户相关数据的csv文件,我需要输出花费超过1000美元的客户的记录。我也得到了这个入门代码:

import csv  
import re  
data = []

with open('customerData.csv') as csvfile:  
    reader = csv.DictReader(csvfile)  
    for row in reader:  
        data.append(row)  
print(data[0])  
print(data[1]["Name"])  
print(data[2]["Spent Past 30 Days"])  

我不是在寻找任何人给我答案,但可能会朝着正确的方向推动我。我知道它已经打开文件来读取和创建列表(数据),并准备输出第一行和第二行的值。我不知道如何调出列值而不将其限制为特定的行号。我是否需要为列创建另一个列表?我是否需要创建一个循环来输出符合>的每条记录? 1000个标准?任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:0)

要获取特定列,您可以使用for循环。我不确定你想要用它做什么,但这可能是一个很好的起点。

for i in range(0,len(data)):
    print data[i]['Name']

len(data)应该等于行数,从而遍历整个列

答案 1 :(得分:0)

示例代码不会泄露数据结构的秘密。它看起来像是一个dicts列表。这没有多大意义,所以我猜猜数据的组织方式。假设数据是一个列表列表,您可以在具有列表推导的列中获取:

data = [['Name','Spent Past 30 Days'],['Ernie',890],['Bert',1200]]
spent_column = [row[1] for row in data]
print(spent_column)  # prints: ['Spent Past 30 Days', 890, 1200]

但你可能想知道是一个大消费者,所以也许你应该回复这些名字:

data = [['Name','Spent Past 30 Days'],['Ernie',890],['Bert',1200]]
spent_names = [row[0] for row in data[1:] if int(row[1])>1000]
print(spent_names)  # prints: ['Bert']

如果示例不清楚,我建议您阅读列表理解;它们很棒:)

您也可以使用常规for循环执行上述所有操作。