在读取CSV文件时,在第n行添加一行。

3

据我所搜集的资料,实际上在同时阅读和编辑时并不容易做到,我也没有成功实现。但最让我困惑的是如何在我的 csv 文件的第 n 行中添加一个元素,例如我想在第二行中添加一行。

mycsv.csv

name,last name
yeison, smith
lola, boa
elmo, spitia
anderson, exneider
juan, ortega

我的代码:

with open("mycsv.csv", "r") as rfh:
 r = csv.DictReader(rfh)
 for idx, row in enumerate(r): #nothing happens
     print(r)    
 with open("mycsv.csv", "a") as wfh:
     if(idx==2):
        #append element "german,ezequiel"
2个回答

2

读取所有行,然后写入应该可以正常工作:

with open('mycsv.csv', 'r') as f:
    lines = f.readlines()

lines.insert(2, 'german, ezequiel')

with open('mycsv.csv', 'w') as f:
    f.write(''.join(lines))

谢谢,看起来比我想象的要简单。但是如果我想一次添加多行怎么办?比如在第1个位置添加 "Pedro, Picapiedra" ? - yavg
你可以通过以下方式将多个条目插入到列表 lines 中: lines = lines[:1] + ['pedro, picapiedra', 'german, ezequiel'] + lines[1:] - yuji

0
你可以使用 pandas
import pandas as pd 

df = pd.read_csv("mycsv.csv")

line = pd.DataFrame({"name": 'XYZ', "last name": 'ABC'}, index=[2])
df2 = pd.concat([df.ix[:1], line, df.ix[2:]]).reset_index(drop=True)

df2.to_csv("mycsv.csv", index=False)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接