2017-05-30 17 views
0

私はPythonプログラミングには非常に新しいので、言語を学ぶための小さなプロジェクトを決めました。Python CSV行ループ

基本的に私がしようとしています:

  1. CSVファイルの最初のセルを読みます。
  2. セルの値が「お気に入り」かどうかを確認します。
  3. 好きな場合は、1のセルの隣にある列に「1」を書き込みます。
  4. それ以外の場合は "0"を書き込みます。
  5. リストの最後まで次の行を繰り返します。

私のコード今:

import csv 

reader = csv.reader(open("mylist.csv"), delimiter=',') 

data = [] 

for row in reader: 
    data.append(row) 

ask = (data[0][0]) 

ans = input("Do you like {}? ".format(ask)) 

if ans == ("y"): 
     f = open('mylist.csv', 'r') 
     reader = csv.reader(f) 
     data = list(reader) 
     f.close() 
     data[0][1] = '1' 
     my_new_list = open('mylist.csv', 'w', newline='') 
     csv_writer = csv.writer(my_new_list) 
     csv_writer.writerows(data) 
     my_new_list.close() 

else: 
     f = open('mylist.csv', 'r') 
     reader = csv.reader(f) 
     data = list(reader) 
     f.close() 
     data[0][1] = '0' 
     my_new_list = open('mylist.csv', 'w', newline='') 
     csv_writer = csv.writer(my_new_list) 
     csv_writer.writerows(data) 
     my_new_list.close() 

そこで、基本的に、私は次の行の内容を取得しようとして立ち往生しています。

参考までに、このプロセスに機械学習を実装することを検討しています。

これを基本的な方法で最初に学習する方法。

助けを歓迎します。

ありがとうございました!

+0

実際に行った作業の複雑さを認識していないようです。同時にCSVファイルを読み書きすることは非常に困難です。そのため、RDBMSが一般的な場所になる前に、人々は悪い昔に固定長のレコードを使用していました。 – e4c5

+3

同じファイルに書き戻してはいけません。終了時に更新されたバージョンを(リストやdictsなどの)メモリに保持し、ファイルに書き込んでください。新しい結果ファイルを作成するか、ファイルを上書きすることができます。 –

+0

私はheheを始めるまで、私は仕事の複雑さを知らなかった。しかし今、私は@ e4c5を完成させる最善の方法を見つけたいと思っています。 – Humbis

答えて

0

同じファイル/ list/dictに対して同時に読み書きするべきではありません。これを行うと、データへの参照が変わることがあります。あなたはあなたの仕事のためにこのようなものから始めることができます。ただし、ファイルが大きくなるにつれてコードが遅くなることに注意してください。 CSVでの私の最後の仕事で

import csv 

reader = csv.reader(open("test.csv", 'r'), delimiter=',') 
content = [] 

for row in reader: 
    item = row[0] 
    ans = raw_input("Do you like {}? ".format(item)) 

    if ans == 'y': 
     content.append([item, 1]) 
    else: 
     content.append([item, 0]) 

writer = csv.writer(open('test.csv', 'w')) 
writer.writerows(content) 
+0

あなたは素晴らしいです、ありがとう。まさに私が望んでいたもの。私が書いたことは誇張されていたが、それに到達する方法を知らなかったことを知っていた。今、私はそれがいかに簡単かを見ます。 – Humbis

0

私はそうファイルを開く:

import csv 
 
with open(name) as csvfile: 
 
       reader = csv.DictReader(csvfile) 
 
       for row in reader: 
 
         data.append(row)

0

を使用すると、入力ファイルからのデータのすべてを含むように結果のcsvファイルが必要な場合が、質問の結果が追加されたら、このようなものを使うことができます。
各レコードの最初の項目の後ろに答え(0または1)を挿入します。

import csv 

reader = csv.reader(open("mylist.csv", 'r'), delimiter=',') 
data = [] 

for row in reader: 
    data.append(row) 
for row in data: 
    ans = raw_input("Do you like {}? ".format(row[0])) 
    if ans == 'y': 
     row[1:1] = "1" 
    else: 
     row[1:1] = "0" 

writer = csv.writer(open('myresult.csv', 'w')) 
writer.writerows(data) 
関連する問題