Python CSV行循环

时间:2017-05-30 06:59:19

标签: python csv

我是Python编程的新手,并决定使用一个小项目来学习该语言。

基本上我想:

  1. 读取CSV文件的第一个单元格。
  2. 询问该单元格值是否“已被喜欢”。
  3. 如果喜欢,请写入1,“1”上单元格旁边的列。
  4. 否则,写上“0”。
  5. 在下一行重复,直到列表结尾。
  6. 我的代码现在:

    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()
    

    所以基本上,我很难尝试获取下一行的内容。

    仅供参考,我希望在这个过程中实现机器学习。

    首先学习如何以基本方式做到这一点。

    欢迎任何帮助。

    谢谢!

3 个答案:

答案 0 :(得分:0)

你不应该同时读取和写入同一个文件/列表/字典。如果这样做,对数据的引用可能会发生变化。您可以从这样的事情开始为您的任务。但请注意,随着文件的增长,代码会变慢。

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)

答案 1 :(得分:0)

在我上次使用csv的工作中,我打开了文件:



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




答案 2 :(得分: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)