我有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文件中的行所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)