我使用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)
谢谢!
更新: full_list看起来像这样:['1,2,3,“MEM”,...]
UPDATE2(APR.22nd): 现在我在同一行中得到了三个数据单元格(A1中的标题,其余分别在A2和A3中)。显然,新行标志不适用于一个大清单中的三个项目。我认为现在更具体的问题是如何将每条记录后面带有'\ n'的记录列表保存到csv。
UPDATE3(APR.23rd): 原始文件
答案 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(','))
想要的输出
请更正我错误使用的术语和语法!感谢。