プロが教えるわが家の防犯対策術!

すいません、python初心者ですので、気長に聞いてくださいcsvファイルの10番目のカラムの人数を合計したんです。1行目のフィールドはカラム名なので飛ばして2行目から読み込みたいんですが、結果が出てきません。一応書いたプログラムは、

#!usr/bin/env python
import sys
import string

i = 0
for line in open('./data.csv').readlines():
item = string.split(line,',')
if item[9].isdigit():
i+=int(item[9])
print i

です。処理速度を早くしたいのでdictionaly化せずに行いたいんですが、誰かご教授願えませんか?

A 回答 (2件)

次のような変更とdata.csvファイルを準備したところ動いているようです。



* #!usr/bin/env → #!/usr/bin/env
* forの次の行から行頭に空白を1文字入れて揃える
* 'i+='で始まる行だけ空白を+1文字余計に入れる

* data.csv
a,b,c,d,e,f,g,h,i,j,k
0,1,2,3,4,5,6,7,8,9,10
0,1,2,3,4,5,6,7,8,9,10

どんなエラーメッセージが表示されますか?

この回答への補足

エラーメッセージは出ないでプログラムが動くんですが、合計が0という風に出力されていて、明らかに間違えているんです。

補足日時:2009/11/02 11:38
    • good
    • 0

私の手元で試す限りは、"print i"行も"item ="などと行頭を揃えているので、0,9,18と表示され、うまく動いています。



途中に"print line"や"print item"といった行を追記して、forループがdata.csvの行数分くりかえされているか、splitされているか、確認しながら進める必要がありそうです。

data.csvの内容は、私が載せたものと同じですか?
インデントを間違えていると最終行の10番目の要素だけが表示されると思いますが、その他にエラーにもならず'0'が1行だけ出力されるという状況は残念ながら想像できません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!