这是我的代码:
with open("testoffset.csv") as handler:
f = open('output_file2.csv', 'w+')
f.write('X,Y,value\n')
for r,l in enumerate(handler):
for col, e in enumerate(l.split(',')):
f.write('{0},{1},{2}\n'.format(r+1,col+1,e))
此输出
X Y value
1 1 1
1 2 2
1 3 3
----------
blank row
----------
2 1 2
2 2 2
2 3 2
----------
blank row
----------
3 1 1
3 2 2
3 3 3
----------
blank row
----------
如何在没有这些空白行的情况下输出CSV文件?
答案 0 :(得分:2)
handler
文件中的行末尾有换行符,您将其写入输出文件。
在拆分行之前通过剥离删除该换行符:
for col, e in enumerate(l.rstrip('\n').split(',')):
您可能希望避免重新发明CSV读取和写入轮子; Python附带了优秀的csv
module,它可以为您完成所有这些工作,包括删除换行符和拆分行:
import csv
with open("testoffset.csv", 'rb') as handler, open('output_file2.csv', 'wb') as output:
reader = csv.reader(handler)
writer = csv.writer(output)
writer.writerow(['X', 'Y', 'value'])
for rownum, row in enumerate(reader, 1):
for colnum, col in enumerate(row, 1):
writer.writerow([rownum, colnum, col])
我还在1开始enumerate()
次调用,以避免在写入时添加一个。
答案 1 :(得分:1)
只需跳过空行。
...
for r,l in enumerate(handler):
if not l.startswith('\n'): #or if l[0] != '\n':
for col, e in enumerate(l.split(',')):
...
答案 2 :(得分:0)
with open("testoffset.csv",'wb') as handler:
替换代码的第一行。