将列表保存到csv时出现问题

时间:2014-04-22 06:18:14

标签: python python-2.7 csv

我使用csv模块中的writerow函数将列表保存到csv。当我在MS Office Excel中打开最终文件时出了点问题。 在我遇到这个问题之前,我试图处理的主要问题是将列表保存到每一行。它将每一行保存到row1中的单元格中。我做了一些小改动,现在发生了这件事。作为一个新手蟒蛇人,我当然很困惑。

import csv
inputfile = open('small.csv', 'r')
header_list = []
header = inputfile.readline()
header_list.append(header)
input_lines = []
for line in inputfile:
    input_lines.append(line)
inputfile.close()

AA_list = []
for i in range(0,len(input_lines)):
    if (input_lines[i].split(',')[4]) == 'AA':#column4 has different names including 'AA'
         AA_list.append(input_lines[i])

full_list = header_list+AA_list

resultFile = open("AA2013.csv",'w+')
wr = csv.writer(resultFile, delimiter = ',')
wr.writerow(full_list)

谢谢! The text is parsed differently from before

更新: full_list看起来像这样:['1,2,3,“MEM”,...]

UPDATE2(APR.22nd): 现在我在同一行中得到了三个数据单元格(A1中的标题,其余分别在A2和A3中)。显然,新行标志不适用于一个大清单中的三个项目。我认为现在更具体的问题是如何将每条记录后面带有'\ n'的记录列表保存到csv。

UPDATE3(APR.23rd): 原始文件 enter image description here

3 个答案:

答案 0 :(得分:0)

导入csv模块是不够的,您也需要使用它。现在,您将每一行作为整个字符串附加到列表而不是字段列表。

开始
with open('small.csv', 'rb') as inputfile:
    reader = csv.reader(inputfile, delimiter=",")
    header_list = next(reader)
    input_lines = list(reader)

现在header_list包含所有标头,input_lines包含所有行的嵌套列表,每个行都拆分成列。

我认为其余部分应该非常简单。

答案 1 :(得分:0)

append()在另一个列表的末尾添加一个列表。因此,当您撰写header_list.append(header)时,它会将header作为字符列表并附加到header_list。你应该写

headers = header.split(',')
header_list.append(headers)

这会将标题行拆分为逗号,headers将是标题字列表,然后在header_list之后正确追加它们。

同样适用于AA_list.append(input_lines[i])

答案 2 :(得分:0)

我明白了。 写作括号中[val],val和val.split(",")之间的差异是:

[val]:一个字符串,其中包含仅包含excel中第一列的所有内容(标题和&#34; 2013,1,2,...&#34;在A1,B1,C1等中)。< / p>

val:每个字母或逗号或空格(我忘记了技术术语)在excel中取一个单元格。

val.split(&#34;,&#34;):逗号在[val]中拆分字符串,并将每个字符串用逗号分隔成一个excel单元格。

以下是我发现的内容:1。the right way to export the flat list to each line by using with syntax,2。split the list when writing row

csvwriter.writerow(JD.split())

full_list = header_list+AA_list
with open("AA2013.csv",'w+') as resultFile:
    wr = csv.writer(resultFile, delimiter= ",", lineterminator = '\n')
    for val in full_list:
        wr.writerow(val.split(','))

想要的输出enter image description here

请更正我错误使用的术语和语法!感谢。