python csv复制列

2024-09-24 02:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含以下内容的文件

first_name,last_name,uid,email,dep_code,dep_name
john,smith,jsmith,jsmith@gmail.com,finance,21230
john,king,jking,jjing@gmail.com,human resource,31230

我想复制列“email”并创建一个新列“email2”,然后将gmail.com从列email2替换为hotmail.com

我是python新手,所以需要专家的帮助,我尝试了一些脚本,但如果有更好的方法来做,请让我知道。原始文件包含60000行。

with open('c:\\Python27\\scripts\\colnewfile.csv', 'rb') as fp_in1, open('c:\\Python27\\scripts\\final.csv', 'wb') as fp_out1:
    writer1 = csv.writer(fp_out1, delimiter=",")
    reader1 = csv.reader(fp_in1, delimiter=",")
    domain = "@hotmail.com"
    for row in reader1:
        if row[2:3] == "uid":
            writer1.append("Email2")
        else:
            writer1.writerow(row+[row[2:3]])

这里是最后一个脚本,唯一的问题是它没有完成整个outfile,它只显示61409行,而在输入文件中有61438行。

inFile='c:\ Python27\scripts\in-093013.csv' outFile='c:\ Python27\scripts\final.csv'

打开(inFile,'rb')作为fp_in1,打开(outFile,'wb')作为fp_out1: writer=csv.writer(fp_out1,分隔符=“,”) reader=csv.reader(fp_in1,分隔符=“,”) 对于col-in阅读器: 删除列[6:] writerow(col)作者 headers=下一个(读卡器) writer.writerow(标题+['email2']) 对于读卡器中的行: 如果长度(行)>;3: email=email.split('@',1)[0]+'@hotmail.com' writer.writerow(行+[电子邮件])


Tags: 文件csvnamecomemailscriptsgmailwriter