nf=open(Output_File,'w+')
with open(Input_File,'read') as f:
for row in f:
Current_line = str(row)
Reformated_line=str(','.join(Current_line.split('|')[1:-1]))
nf.write(Reformated_line+ "\n")
我试图读取表格格式的Input file
并将其写入CSV文件,但我的输出也包含最后一个空行。如何删除CSV中的最后一个空行?
答案 0 :(得分:1)
听起来你的输入文件中有一个空行。根据您的评论,您实际上有一个非空行,其中没有|
个字符。在任何一种情况下,检查空结果行都很容易。
试试这个:
#UNTESTED
nf=open(Output_File,'w+')
with open(Input_File,'read') as f:
for row in f:
Current_line = str(row)
Reformated_line=str(','.join(Current_line.split('|')[1:-1]))
if Reformatted_line:
nf.write(Reformated_line+ "\n")
其他说明:
with
。以同样的方式打开两个文件。str(row)
是无操作。 row
已经是一个str。str(','.join(...))
同样多余。open(..., 'read')
不能有效使用open()
的mode参数。您应该使用r
或者甚至完全省略参数。row = row.split()
而不是Reformatted_line = row.split()
。这是一个包含这些和其他建议的版本:
with open(Input_File) as inf, open(Output_File, 'w+') as outf:
for row in inf:
row = ','.join(row.split('|')[1:-1])
if row:
outf.write(row + "\n")
答案 1 :(得分:0)
只是稍微重新排序的问题:
first = True
with open(Input_File,'read') as f, open(Output_File,'w+') as nf:
for row in f:
Current_line = str(row)
Reformated_line=str(','.join(Current_line.split('|')[1:-1]))
if not first:
nf.write('\n')
else:
first = False
nf.write(Reformated_line)