我有一个jotform表单,可以导出到csv文件中。我在表格中使用了一个无序的列表,这样响应者就可以按照兴趣的顺序对学校商店进行排名。CSV文件在记事本中如下所示:
"Submission Date","First Name","Last Name",Email,"Student ID","Orderable List"
"Aug 2, 2022",Cyndi,Bussey,cbussey@fcts.us,12345,"1: Programming and web
2: Animal Science
3: Landscape
4: Health Tech
5: Culinary
6: Carpentry
7: Electrical
8: Advanced Manufacturing
9: Auto body
10: Auto Tech
11: Cosmo
12: Welding
13: one more
14: two more"
我需要这一排看起来像:"2022年8月2日";,辛迪,Bussey,cbussey@fcts.us,12345,";1:编程与网络"2:动物科学"3:景观"4:健康技术"5:烹饪"6:Carpentry"7:电气"8:先进制造"9:车身"10:Auto Tech"11:Cosmo"12:焊接"13:一个以上"14:再加两个";(换行表示行末尾(
我需要每个商店都为每个响应者单独列一列,而不是像现在这样单独排一行。很明显,每家商店的末尾都有换行符。我想用逗号替换换行符。在python中我该如何做到这一点?
注意:我对lambda不是很精通。。。。
提前谢谢。
虽然有点不清楚你真正想要的是什么,但我会错误地回答你标题中的问题,而不是对你问题其余部分的任何其他解释。
使用适当的csv读写器处理格式。这会为你省去很多麻烦。
import csv
def transform(row):
date, fname, lname, email, sid, ordlist = row
return date, fname, lname, email, sid, ordlist.replace('n', ',')
with open('file.csv', newline='') as file, open('transformed.csv', 'w') as newfile:
rows = csv.reader(file)
csv.writer(newfile).writerows(map(transform, rows))
你会得到:
Submission Date,First Name,Last Name,Email,Student ID,Orderable List
"Aug 2, 2022",Cyndi,Bussey,cbussey@fcts.us,12345,"1: Programming and web,2: Animal Science,3: Landscape,4: Health Tech,5: Culinary,6: Carpentry,7: Electrical,8: Advanced Manufacturing,9: Auto body,10: Auto Tech,11: Cosmo,12: Welding,13: one more,14: two more"
请注意,这个快速脚本还替换了第6个标头中的换行符,但由于没有换行符,因此没有任何效果。