更新 csv 文件中的特定行

TmX*_*EKT 4 python csv row

我有一个这样的 csv 文件:

Name,PhoneNumber,Adress
Run Code Online (Sandbox Code Playgroud)

我想从用户那里获取输入并更改名称。我可以删除整行。

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')
Run Code Online (Sandbox Code Playgroud)

这是我的删除代码。

Jea*_*bre 5

如果名称匹配,只需交互提示输入新名称,更新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']})
Run Code Online (Sandbox Code Playgroud)

另外:为了最大的兼容性(特别是在 Windows 上),python 2 需要open('outputfile.csv', 'wb')(或者你在输出文件中得到空行)而 python 3 需要open('outputfile.csv', 'w', newline='').