为CSV名称解析改进我的Python解决方案:lastname,firstname到firstname lastname

时间:2018-01-07 04:50:54

标签: python csv

我必须在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)

1 个答案:

答案 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: