在python中使用Excel表格式

时间:2011-06-22 18:22:41

标签: python tabular

我有一个保存为CSV的Excel表格看起来像(当它在Excel中时)这个更长的时间:

    Monday  Tuesday     Wednesday   Thursday    Friday
marsbar 9   8   0   6   5
reeses  0   0   0   9   0
twix    2   3   0   5   6
snickers    9   8   0   6   5

(格式不完美,但你得到的要点 - 糖果棒/天)。我想为python编写一个程序,我可以在程序中输入一个糖果名称列表

>>> ['twix', 'reeses']

它会给我一周那天吃糖果棒的日子以及当天吃了多少个糖果棒。结果看起来像这样:

Monday 2
Tuesday 3
Wednesday 0
Thursday 14
Friday 6

有人可以帮我写这样的节目吗?

5 个答案:

答案 0 :(得分:3)

我们可以帮助您编写这样的程序,是的。

我们不会为您编写程序(这不是StackOverflow的内容)。

Python附带CSV module,它将在Excel保存的CSV文件中读取。

您可以将数据存储在dictionary中,以便于检索。

祝你好运!

答案 1 :(得分:2)

可能使用csv module

我认为分隔符是制表符(\t

import csv
reader = csv.reader(open('csv_file.csv', 'rb'), delimiter='\t')
for row in reader:
    print row

>>>['Monday','Tuesday', 'Wednesday', 'Thursday', 'Friday']
['marsbar', '9', '8','0', '6', '5']
['reeses', '0', '0', '0', '9', '0']
['twix', '2', '3', '0', '5', '6']
['snickers', '9', '8', '0',  '6',  '5']

答案 2 :(得分:2)

最好的办法是使用python中内置的csv包。它会让你循环遍历行,每次给你一个列表,如下所示:

import csv
candy_reader = csv.reader(open('candy.csv', 'rb'))

for row in candy_reader:
  if row[0] in candy_to_find:
    monday_total += row[1]
    # etc.    

我没有初始化几个变量,但我认为这应该给你基本的想法。

答案 3 :(得分:1)

除了其他答案之外,您可能还想查看xlrd模块,因为如果您不想处理CSV业务,它可以直接处理Excel电子表格。该模块允许您一次读取整个(或范围)的行/列以及抓取单个单元格,您可以遍历所有内容以搜索您想要的内容,然后在同一行中返回您想要的任何相关“值” / column您找到搜索条件的列。

答案 4 :(得分:0)

一些有用的内容:

如果你有一个列表,如

[['marsbar', 0, 1, 2, 3, 4], ['twix', 3, 4, 5, 6, 7]]

(您应该可以使用csv模块获得)

您可能希望将其转换为字典,其中每个列表的第一项用于键,其余的组成值。你可以用

之类的东西来做到这一点
dict((x[0], x[1]) for x in list_of_lists)

您也可以使用列表推导查找多个键:

[the_dict[key] for key in key_list]

它为您提供了一个列表列表,您希望在这些列表中对每个列表的第一个元素,第二个元素等进行求和。为此,我们使用“压缩”列表来列出包含所有第一个元素的列表,所有第二个元素等,然后对内部列表求和。

[sum(x) for x in zip(*the_requested_candybars)]

zip()函数有多个参数; *这里将列表列表转换为多个列表参数。

我们可以zip再次将周名称与总和相匹配。