当前位置: 首页 > 面试题库 >

使用CSV文件中的Python删除行

孙夕
2023-03-14
问题内容

我只想删除第三行中值为‘0’的行。数据示例如下:

6.5, 5.4, 0, 320
6.5, 5.4, 1, 320

因此,第一行将需要删除,而第二行将保留。

到目前为止,我所拥有的如下:

import csv
input = open('first.csv', 'rb')
output = open('first_edit.csv', 'wb')
writer = csv.writer(output)
for row in csv.reader(input):
    if row[2]!=0:
        writer.writerow(row)
input.close()
output.close()

任何帮助都会很棒


问题答案:

你很亲密
目前,您将row[2]整数与0进行比较,然后将其与字符串进行比较"0"。当您从文件中读取数据时,它是一个字符串而不是整数,因此这就是您的整数检查当前失败的原因:

row[2]!="0":

另外,您可以使用with关键字使当前代码略显pythonic,从而减少代码中的行,并且可以省略以下.close语句:

import csv
with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out:
    writer = csv.writer(out)
    for row in csv.reader(inp):
        if row[2] != "0":
            writer.writerow(row)

请注意,这input是Python的内置函数,因此我改用了另一个变量名。

编辑 :csv文件行中的值以逗号
空格分隔;在普通的csv中,它们将简单地用逗号分隔,然后进行检查"0"即可,因此您可以使用strip(row[2]) != 0,也可以检查" 0"

更好的解决方案是更正csv格式,但是如果您要保留当前格式,则可以使用给定的csv文件格式进行以下操作:

$ cat test.py 
import csv
with open('first.csv', 'rb') as inp, open('first_edit.csv', 'wb') as out:
    writer = csv.writer(out)
    for row in csv.reader(inp):
        if row[2] != " 0":
            writer.writerow(row)
$ cat first.csv 
6.5, 5.4, 0, 320
6.5, 5.4, 1, 320
$ python test.py 
$ cat first_edit.csv 
6.5, 5.4, 1, 320


 类似资料:
  • 我有一个名为key_resp_5_rt的列,其中我想删除300ms以下的所有行(这是一个反应时间列) 有人能告诉我下面的代码是否可以删除rt小于0.3秒的行吗? 当我事后检查时,值低于0.3的行仍然存在,我不知道为什么

  • 问题内容: 目标 我已经从hotmail下载了CSV文件,但其中有很多重复项。这些重复项是完整的副本,我不知道为什么我的手机会创建它们。 我想摆脱重复。 方法 编写python脚本以删除重复项。 技术指标 问题答案: 更新:2016 如果您乐于使用有用的外部库: @IcyFlame解决方案的更有效版本 要就地编辑同一文件,您可以使用此

  • 问题内容: 我尝试在Java中删除csv文件中的列。 例如,我有这个csv文件 我想要下一个操作后:(删除csvFile,2)将是: 我发现只有调用行而不是列的操作。 问题答案: 删除CSV文件中一列的唯一方法是删除整个文件(即文件的每一行)的标题和该列的信息。即使您使用第三方库,它也会在内部进行。

  • 问题内容: 假设我有一个充满昵称的文本文件。如何使用Python从此文件中删除特定的昵称? 问题答案: 首先,打开文件并从文件中获取所有行。然后以写模式重新打开文件并写回你的行,但要删除的行除外: 你需要在比较中使用换行符,因为如果文件不以换行符结尾,则最后一个line也不行。

  • 问题内容: 我已经能够使用该站点上多个用户的输入来使用python创建一个csv,并希望对您的帖子表示感谢。我现在很困惑,将发表我的第一个问题。 我的input.csv看起来像这样: 我正在尝试删除“年份”列及其所有条目。从1960年到2010年,总共有40多个条目。 问题答案: 顺便说一句,循环可以删除,但并没有真正简化。 同样,您可以以直截了当的方式坚持删除列的要求。我发现这通常是一个不好的策

  • 问题内容: 如何使用python删除文件的最后一行? 输入文件示例: 输出文件示例: 我创建了以下代码来查找文件中的行数-但我不知道如何删除特定的行号。 问题答案: 您可以使用上面的代码,然后: 这将为您提供包含除最后一行以外的所有行的行数组。