- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:teraterm上でpythonを使いcsvファイルでいろいろやりたいんですが,...)
teratermを使用してPythonでCSVファイルの操作方法
このQ&Aのポイント
- teraterm上でPythonを使用してCSVファイルを操作する方法についてご質問があります。
- CSVファイルの中の10番目のカラムにある人数を1番目のフィールドをスキップして足し合わせたいですが、まだ理解が不足しています。
- Pythonのコードを書いてファイルを読み込んでみましたが、うまく動作しません。アドバイスをお願いします。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
Pythonでは半角スペースは大切な役割を果します。 ここに投稿する時に行頭のスペースは消されてしまうため全角スペースを入れているのだと考えてそこには触れません。 他には次のような問題がありそうです。 1. 誤:"/usr/bin/env/python"、正:”/usr/bin/env python” 2. 誤:"word[10]"、正:"words[9]" 3. 変数"sum"はfor手前で初期化(sum=0)する必要がある 4. 誤:"string.lower()"、正:"string.atoi()" 5. 1行目を読み飛ばす処理はいろいろ考えられます。10番目が数値の時だけsumに加えると考えると"if words[9].isdigit():"などのif文が使えます。 適切にスペースを使えば、これぐらいで動くようになるかと思います。 最後に今回に限らずプログラミング関連では、次のような情報があるとより適切な回答があると思います。 1. どこでつまづいたのかはコードだけで判らない場合が多いです。実行できなかった時の画面に出力されたメッセージは、できるだけコードを実行しているコマンドラインから全文をコピーしてください。 2. TeraTermの先にあるシステム/OS名(CygwinとかFreeBSDとか)やLinuxであればUbuntu、CentOSなどのDistribution名を書くと、より細かい返信があるかもしれません。 まだ動かなければ、またそのコード全体をコピーして質問をするのが良いでしょう。
補足
すいません。返信が遅くなりました。 一応、アドバイス通りにプログラムを書いてみました。 #!/usr/bi/env python #!coding: utf-8 import sys,string,csv sum = 0 for line in sys.stdin.readlines(): words=string.split(line, ',') if words[9].isdigit(): sum+=string.atoi(words[14]) print sum しかし、やはり動きませんでした。 words=string.split(line, ',') ^ IndentationError: expected an indented block というようなエラーが出てきてしまいました。 書き直しても何度も出てくるのですが解決しません。 ご教授願えますか?