Python CSV删除空行[重复]

Posted

技术标签:

【中文标题】Python CSV删除空行[重复]【英文标题】:Python CSV delete empty rows [duplicate] 【发布时间】:2015-11-16 15:10:09 【问题描述】:

我很难尝试使用 python 3.4.3 从 csv 文件中删除空(空白)行。每次我运行我的脚本时,输出都与原来的一样。

  import csv
  ...


 with open('demo004.csv') as input, open('demo005.csv', 'w') as output:
      writer = csv.writer(output)
      for row in csv.reader(input):
          if any(field.strip() for field in row):
             writer.writerow(row)
      input.close()
      output.close()

我的 CSV 文件格式。

AA,AB,AC

BA,BB,BC

CA,CB,CB

而我想获得

AA,AB,AC
BA,BB,BC
CA,CB,CB

【问题讨论】:

原始文件中的分隔符是什么?我猜是逗号,因为您没有指定?如果您可以链接demo004.csvdemo005.csv 中的一些数据,那将很有帮助 请在您的帖子中包含一个完整的示例,尤其是输入、输出和所需输出的简短数据集。显示的文件名不会让帮助者重复问题。 那是真正的代码吗?在该缩进级别关闭输入/输出(无论如何使用with 语句是不必要的)将导致异常 请提供足够的代码和示例数据来重现问题。 @MichalK:您的屏幕截图显示您删除了with,并且看起来您删除了行尾所需的冒号。从您的原始代码(对我有用)开始,只需在两个打开中添加newline='' 【参考方案1】:

如果您只对删除空行(即空行或可能仅包含空格的行)感兴趣,那么您无需担心其他行是 CSV 的事实。这意味着你可以这样做:

with open('demo004.csv') as input, open('demo005.csv', 'w') as output:
    non_blank = (line for line in input if line.strip())
    output.writelines(non_blank)

【讨论】:

【参考方案2】:

当您尝试打开要写入的文件时,请使用附加参数 newline='' 来打开它

import csv
  ...


 with open('demo004.csv') as input, open('demo005.csv', 'w', newline='') as output:
     writer = csv.writer(output)
     for row in csv.reader(input):
         if any(field.strip() for field in row):
             writer.writerow(row)

【讨论】:

请不要发布指向duplicate answers的链接。相反,请考虑其他可以帮助未来用户找到所需答案的操作,如链接帖子中所述。 感谢您更新我。已整改! 我认为你需要删除newline = '' newline = ' ' 已专门为 python 3.x 添加。如果您使用的是 Python 2.x,则不需要 newline=' '

以上是关于Python CSV删除空行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Python 如何保存取消空行的csv文件

Python CSV 编写器空行

python csv写入数据,消除空行

超详解Python读写csv文件及空行问题解决

通过 python 将 txt 转换为 CSV:为啥会出现额外的空行? [复制]

使用python脚本从csv文件中删除重复的行