使用dictwriter覆盖相同csv文件中的行

使用dictwriter覆盖相同csv文件中的行,第1张

概述我有names.csvfirst_name,last_name Baked,Beans Lovely,Spam John,Bang Harry,Potter 我想在同一个文件中用“jason statham”重命名“John Ban”.我试图使用file.seek()但失败了import csv with open('/home/tiwari/Desktop

我有names.csv

first_name,last_nameBaked,Beanslovely,SpamJohn,BangHarry,Potter

我想在同一个文件中用“jason statham”重命名“John Ban”.
我试图使用file.seek()但失败了

import csvwith open('/home/tiwari/Desktop/names.csv','rw+') as csvfile:    fIEldnames = ['first_name','last_name']    writer = csv.DictWriter(csvfile,fIEldnames=fIEldnames)    reader = csv.DictReader(csvfile)    for line,row in enumerate(reader):        rs = sys.getsizeof(row)        if row['first_name'] == 'John':            csvfile.seek(-rs)            writer.writerow({'first_name': 'Jason','last_name': 'statham'})
最佳答案除非替换字符串与原始字符串的长度完全相同,否则您的方法将无效.

我建议读取所有行,并替换它们,并将其写回.

import csvwith open('/home/tiwari/Desktop/names.csv','r+') as csvfile:    reader = csv.DictReader(csvfile)    rows = []    for row in reader:        if row['first_name'] == 'John':            row['first_name'] = 'Jason'            row['last_name'] = 'Statham'        rows.append(row)    csvfile.seek(0)  # back to begining of the file.    fIEldnames = ['first_name',fIEldnames=fIEldnames)    writer.writeheader()    writer.writerows(rows)    csvfile.truncate()  # In case of updated content is shorter.
总结

以上是内存溢出为你收集整理的使用dictwriter覆盖相同csv文件中的行全部内容,希望文章能够帮你解决使用dictwriter覆盖相同csv文件中的行所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1206458.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存