我有names.csv
first_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','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 csv
with 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。