如果我有几个 csv 文件如下:
a,1,2,3
type, max, min, avg
b,4,5,6
<empty line>
c,6,7,8
xxx,4,3,2
d,5,6,7
在使用 csv 阅读器读取上述 csv 文件后,我如何使用 xlwt 模块将数据转储到新的 xls 文件中,但是以一种排列的方式,以便它: - 将标题写入第一行(此行始终具有“类型”为第一项。) - 忽略空行 - 忽略第一项为“xxx”的任何行
我尝试使用以下代码,但空行并没有消失。:(
for filename in glob.glob(p):
(f_path, f_name) = os.path.split(filename)
(f_short_name, f_extension) = os.path.splitext(f_name)
ws = wb.add_sheet(str(f_short_name))
spamReader = csv.reader(open(filename, 'rb'))
for row in spamReader:
pass_count = 0
if 'type' in row[0]:
for col in range(len(row)):
ws.write(0,col,convert(row[col]))
else:
if (((row[0] == 'xxx') or (row[0] == ' ')):
pass_count += 1
pass
else:
for col in range(len(row)):
ws.write(row_count,col,convert(row[col]))
row_count = row_count+1-pass_count
wb.save(q)
编辑:伙计们,很抱歉误导了最初的 csv 数据。我的 csv 数据文件不包含任何空行。它是包含空行的最终产品,即最终的 xls 文件。空行恰好出现在row[0] - 'type'
. 另外,我还集成了一个防止 line1 被覆盖的代码。
例如输入:
a,1,2,3
type, max, min, avg
b,4,5,6
c,6,7,8
xxx,4,3,2
d,5,6,7
输出 xls:
type, max, min, avg
<empty line>
a,1,2,3
b,4,5,6
c,6,7,8
d,5,6,7
在这里,标题被写入第一行,'xxx' 行被忽略,但空行出现在第 2 行,这是输入文件中行 [0]='type' 的行的位置。这就是为什么我引入了“pass_count”来跳过这一行但似乎没有在某个地方找到合适的地方。