删除CSV文件中的最后一个空行

时间:2016-08-09 18:22:20

标签: python csv

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中的最后一个空行?

2 个答案:

答案 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)