Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更新csv文件中的特定行_Python_Csv_Row - Fatal编程技术网

Python 更新csv文件中的特定行

Python 更新csv文件中的特定行,python,csv,row,Python,Csv,Row,我有一个如下的csv文件: Name,PhoneNumber,Adress 我想从用户那里获取输入并更改名称。我可以删除整行 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(csvfi

我有一个如下的csv文件:

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

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

这是我的删除代码

如果名称匹配,只需交互提示输入新名称,更新

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']})

旁白:为了最大的兼容性(特别是在windows上),python 2需要
open('outputfile.csv','wb')
(或者在输出文件中得到空行),而python 3需要
open('outputfile.csv','w',newline='')
行['name']==输入(“输入新名称:”)
当名称匹配时。然后写一行。这就是你想要的吗?是的,用新名称写这一行。另外,你可以只做
writer.writerow(行)