2011-06-22 2 views
-2

でExcelの表形式を使用する:これはただ長い(これはExcelでいたときに)私はのようになりますCSVとして保存されたExcelの表を持っているのpython

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 

(フォーマットは完璧イマイチが、あなたが得ますgist - キャンディーバー/日)。私は、プログラム内の入力キャンディーバー名のリストを

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

ことがあったのpythonのためのプログラムを書きたい、それが私にそれらのキャンディーバーを食べたどの曜日を与えるだろうし、どのように多くのキャンディーその日、リストのバーが食べられました。結果は次のようになります。

Monday 2 
Tuesday 3 
Wednesday 0 
Thursday 14 
Friday 6 

誰かがこのようなプログラムを書くのに役立つかもしれませんか?

+0

"csvとして保存"されている場合は、カンマが全くないのはなぜですか? – Johnsyweb

+0

@Johnsyweb私はちょうどそれをExcelのように見えるワットをコピーして貼り付けました – user808545

+2

質問に答える努力量と人々がそれに答えるために費やす努力の量の間に、StackOverflowに強い相関関係(単なるではない)があります。 – Johnsyweb

答えて

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

私たちはできますそうプログラムを書く、はい。

私たちはあなたのためにプログラムを書くつもりはありません(これは、StackOverflowについてのものではありません)。

PythonにはCSV moduleが付属しています。これはExcelで保存されたCSVファイルで読み込まれます。

dictionaryにデータを保存すると、検索が簡単になります。

幸運を祈る! csv module

とたぶん

2

私は区切り文字はタブ文字(\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'] 
1

その他の回答に加えて、xlrdモジュールを参照することもできます。これは、CSVビジネスに取り組んでいない場合にExcelスプレッドシートを直接処理できるためです。このモジュールでは、一度に行/列の全体(または範囲)を読み取るだけでなく、個々のセルを取得することができます。また、すべてを繰り返して、必要なものを検索し、同じ行に必要な値/あなたの検索条件を見つけた場所の列。

0

いくつかの有用なビット:

あなたはおそらくしたくなります

(あなたがcsvモジュールを使用することによって得ることができる必要があります)

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

のようなリストのリストを持っている場合それを辞書に変換します。ここで、各リストの最初の項目はキーに使用され、残りは値を構成します。あなたが最初の要素を合計したいリストのリストを与える

[the_dict[key] for key in key_list] 

を:あなたは、あなたにもリスト内包で複数のキーを調べることができます

dict((x[0], x[1]) for x in list_of_lists) 

のようなものでこれを行うことができますこれを行うには、最初のすべての要素、すべての2番目の要素などを含むリストのリストを作成し、次に内側のリストを合計するためにリストをジップします。

zip()関数には複数の引数があります。 *は、リストのリストをいくつかのリスト引数に変えます。

zipもう一度合計で週の名前を一致させることができます。

関連する問題