Python 2.7 csv读取,修改然后用dict写?

时间:2015-02-16 16:28:40

标签: python-2.7 csv dictionary

好的我承认我的问题可能会重复this一个问题,但无论如何我都会问,因为虽然最终目标是相似的,但使用的python代码似乎有很大不同。

我经常有一个学生列表来创建用户帐户。为此,我需要生成格式为

的UserId
 `Lastname[0:6].capitalize() + Firstname[0].capitalize()` 

或姓氏和第一个首字母的六个字符。我希望使用python脚本自动执行此操作,从一个包含firstname / lastname的.csv文件中读取,并将firstname lastname userid写入另一个csv。

这是我的代码,它几乎可以工作,但我最后写入.csv部分的写行很困难:

import csv



input_file = csv.DictReader(open("cl.csv"))


index=0
fldnms=input_file.fieldnames
fldnms.append('UserName')
print fldnms

for row in input_file:
    index+=1
    UserID=(row["Last"][0:6].capitalize() + row["First"][0].capitalize())
    row['UserName'] = UserID
    print index, row["Last"], row["First"], row["UserName"]



with open("users.csv",'wb') as out_csv:
    dw = csv.DictWriter(out_csv, delimiter=',', fieldnames=fldnms)
    dw.writerow(dict((fn,fn) for fn in fldnms))
    for row in input_file:
        dw.writerow(row)

欢迎提供意见/建议。

谢谢,

Brian H。

1 个答案:

答案 0 :(得分:1)

经过一夜好眠后,我回到了这个地方,这是工作版:

'''
Reads cl.csv (client list) as firstname lastname list with header

Writes users.csv as lastname firstname userid list w/o header
'''
import csv

INfile=open("..\cl_old.csv")
input_file = csv.DictReader(INfile, delimiter=' ')


fldnms={}
#print type (fldnms)
fldnms= input_file.fieldnames
fldnms.append('UserName')
#print type (fldnms)
#print (fldnms["Last"],fldnms["First"],fldnms["UserName"])
index =0


OUTfile=open("users.csv",'wb')
dw = csv.DictWriter(OUTfile, delimiter=',', fieldnames=fldnms)
dw.writerow(dict((fn,fn) for fn in fldnms))


for row in input_file:
    index+=1
    UserID=(row["Last"][0:6].capitalize() + row["First"][0].capitalize())
    row['UserName'] = UserID
    print index, row["Last"], row["First"], row["UserName"]
    dw.writerow(row)

INfile.close()
OUTfile.close()

cl.csv包含一个姓氏对的列表。结果存储在users.csv中,名称为userid。

我在python中做了这个练习,因为excel会在一条指令中执行此操作。

=CONCATENATE(LEFT(A2,6),LEFT(B2,1))

希望这是有意义的。

BJH