好的我承认我的问题可能会重复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。
答案 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