将包含逗号的值的CSV文件转换为多列CSV文件

时间:2017-10-23 10:24:58

标签: python python-2.7 csv

我想创建一个小程序,将包含以逗号分隔的值的一列CSV文件转换为包含多个具有一个值的列的CSV文件:

输入文件:

input file

输出文件:

output file

因此我写了这段代码:

my_string1 = 'A,B,C,D,E'
my_string2 = 'A,B,C,D,E'
my_string3 = 'A,B,C,D,E'
my_list1 = my_string1.split(",")
my_list2 = my_string2.split(",")
my_list3 = my_string3.split(",")
path = 'C:\Dokumente\\n_1.csv'
rows = zip(my_list1,my_list2,my_list3)
with open(path, "wb") as csv_file:
    writer = csv.writer(csv_file, delimiter=',')
    for row in rows:
        for column in row:
            writer.writerow('%s;' % column)

但问题是它将所有值都写在一列中。

我想逐列编写,然后我想移到第二行再写一次?

我使用Eclipse Oxy使用PyDev和Python 2.7

2 个答案:

答案 0 :(得分:2)

您的代码存在两个问题。首先,不需要使用zip(),而只需通过rows = [my_list1,my_list2,my_list3]创建列表列表。通过打印结果可以看出两者之间的差异:

rows_zip = zip(my_list1,my_list2,my_list3)
rows_list = [my_list1,my_list2,my_list3]

print (list(rows_zip))
#[('A', 'A', 'A'), ('B', 'B', 'B'), ('C', 'C', 'C'), ('D', 'D', 'D'), ('E', 'E', 'E')]

print (rows_list)
#[['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E'], ['A', 'B', 'C', 'D', 'E']]

其次,您需要将整个列表my_list1传递给writer.writerow(),因为这会写入整个csv文件行。因此,您只需要一个循环,它遍历您的列表列表:

my_string1 = 'A,B,C,D,E'
my_string2 = 'A,B,C,D,E'
my_string3 = 'A,B,C,D,E'
my_list1 = my_string1.split(",")
my_list2 = my_string2.split(",")
my_list3 = my_string3.split(",")

path = 'C:\Dokumente\\n_1.csv'
rows = [my_list1,my_list2,my_list3]

with open(path, "wb") as csv_file:
    writer = csv.writer(csv_file, delimiter=',')
    for row in rows:
        writer.writerow(row)

答案 1 :(得分:0)

将其保存为excel文件,根据定义,CSV是用逗号,冒号等分隔的一列。在您的代码中,您将分割一个字符串,然后再用逗号分隔它们,撤消之前刚刚执行的操作。 / p>

你可以使用pandas,加载CSV文件并将其保存为excel格式

    df=pandas.read_csv("file.csv")
    df.to_excel(filename)