使用Python在Excel中搜索列并返回行
我有一个包含日期的csv文件,第一列是日期。我想查找这些日期,并以数组的形式返回对应的行(这点非常重要)。我该如何用Python来实现呢?谢谢。
Excel文件:
A B C
1 12202014 403 302
2 12212014 312 674
3 12222014 193 310
输入:
Search csv file for 12212014
输出:
[12212014,312,674]
尝试的代码:
date = '12212014'
with open('dates.csv', 'rt') as f:
reader = csv.reader(f, delimiter=',')
for row in reader:
if date == row[0]:
print "found the date"
我该如何返回行,而不仅仅是打印出来呢?
1 个回答
2
基本的想法是创建一个字典,也就是一种映射关系,格式是 日期
-> 行
,然后通过这个键来获取对应的值:
import csv
data = {}
with open('test.csv', 'r') as f:
reader = csv.reader(f)
for line in reader:
data[line[0]] = line
date_to_find = '12212014'
print data.get(date_to_find, 'Date not found')
输出结果是:
['12212014', '312', '674']
这样做的好处是,如果你之后需要查找日期,就可以用这个映射关系来帮助你。
另一种方法是使用生成器表达式,逐行读取文件,直到找到你想要的日期为止:
import csv
date_to_find = '12212014'
with open('test.csv', 'r') as f:
print next((line for line in csv.reader(f) if line[0] == date_to_find),
'Date not found')
输出结果是:
['12212014', '312', '674']
希望这些对你有帮助。