使用Python在Excel中搜索列并返回行

1 投票
1 回答
2073 浏览
提问于 2025-04-18 00:46

我有一个包含日期的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']

希望这些对你有帮助。

撰写回答