Updating a specific row in csv file

人走茶凉 提交于 2019-12-23 04:48:43

问题


I have a csv file like this:

Name,PhoneNumber,Adress

I want to get input from the user and change the name. I can delete the whole row.

name = input("Enter a name : ")
fieldnames = ["name", "number", 'address']
with open('book.csv', 'r') as csvfile, open('outputfile.csv', 'w') as output:
    reader = csv.DictReader(csvfile, fieldnames=fieldnames)
    writer = csv.DictWriter(output, fieldnames=fieldnames)
    for row in reader:
        if not name == row['name']:
            writer.writerow({'name': row['name'], 'number': row['number'], 'address': row['address']})
shutil.move('outputfile.csv','book.csv')

This is my deleting code.


回答1:


if name matches, just interactively prompt for a new name, updating row:

for row in reader:
    if name == row['name']:
        row['name'] = input("enter new name for {}".format(name))
    # write the row either way
    writer.writerow({'name': row['name'], 'number': row['number'], 'address': row['address']})

Aside: some python 2 versions need open('outputfile.csv', 'wb') (or you get blank lines in output file) and some python 3 versions need open('outputfile.csv', 'w', newline='').

Newest releases of python 2 or 3 are ok with just open('outputfile.csv', 'w') as you're doing.



来源:https://stackoverflow.com/questions/41574037/updating-a-specific-row-in-csv-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!