我必须在Python中为一个棘手的CSV文件出现问题的客户端实现一个真实的解决方案。标记为联系人的列包含在每个单元格中写为lastname, firstname
的名称。他需要他们在每个单元格中firstname lastname
。
我的解决方案有效,但它反映了我对编码的新意见。我需要在,
上拆分名称,但由于CSV将每行视为list
我无法使用split
- 因此,每行的转换首先是一个字符串。
处理此问题的更有效方法是什么?
感谢您的所有输入!
import csv
with open('names_to_process.csv', 'r') as in_file:
in_data = csv.reader(in_file)
with open('newnames.csv', 'w') as out_csv:
out_data = csv.writer(out_csv)
for row in in_data:
name_string = ''.join(row) #converts each field from lst to str
reversed_name = name_string.split(',') #.split now that its a str
lname = ' ' + reversed_name[0] + "\n"
fullname = reversed_name[1].lstrip() + lname
out_csv.write(fullname)
答案 0 :(得分:0)
由于您的数据只有两列,因此以下方法更简单:
import csv
with open('names_to_process.csv', 'rb') as in_file, open('newnames.csv', 'wb') as out_file:
in_csv = csv.reader(in_file)
out_csv = csv.writer(out_file)
for last_name, first_name in in_csv:
out_csv.writerow(["{} {}".format(first_name, last_name)])
例如,包含以下内容的文件
flintstone,fred
rubble,barney
会产生:
fred flintstone
barney rubble
这假设您使用的是Python 2.x,如果您使用的是Python 3.x,则需要将其修改为:
with open('names_to_process.csv', 'r', newline='') as in_file, open('newnames.csv', 'w', newline='') as out_file: