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

如何以Python方式检测CSV文件中的缺失字段?

段干昊然
2023-03-14
问题内容

我正在尝试使用Python的csv模块(特别是DictReader该类)解析CSV文件。有没有Python的方法来检测空白或缺失的字段并引发错误?

这是使用以下标题的示例文件:NAME,LABEL,VALUE

foo,bar,baz
yes,no
x,y,z

解析时,我希望第二行抛出一个错误,因为它缺少VALUE字段。

这是一个代码片段,显示了我是如何实现的(忽略硬编码的字符串…它们只是为了简洁起见):

import csv

HEADERS = ["name", "label", "value" ]
fileH = open('configFile')
reader = csv.DictReader(fileH, HEADERS)

for row in reader:
    if row["name"] is None or row["name"] == "":
        # raise Error
    if row["label"] is None or row["label"] == "":
        # raise Error
    ...
fileH.close()

有没有一种更清洁的方法来检查CSV文件中的字段而没有一堆if语句?如果需要添加更多字段,则还需要更多条件,如果可能的话,我希望避免这些条件。


问题答案:
if any(row[key] in (None, "") for key in row):
    # raise error

编辑 :甚至更好:

if any(val in (None, "") for val in row.itervalues()):
    # raise error


 类似资料:
  • 问题内容: 我需要阅读一个CSV文件,其中包含带有逗号的字段,因此我将包含逗号的字段加了双引号,例如: 但是,当我尝试在Python中读取文件时,得到的字段由逗号分隔,如下所示: 我正在读取具有以下代码的CSV文件: 是否可以读取包含逗号的双引号字段? 问题答案: Python模块实际上确实支持带引号的字段,即使默认情况下也是如此。您的问题在于,默认情况下,Python不会跳过空格,因此您需要使用

  • 问题内容: 我认为我应该完成一项我似乎无法解决的非常简单的任务。 如何将Python字典写入csv文件?我想要的只是将字典键写入文件的第一行,并将键值写入第二行。 我最接近的是以下内容(我是从别人的帖子中获得的): 问题是,上面的代码似乎只将密钥写入第一行,仅此而已。我没有将值写入第二行。 有任何想法吗? 问题答案: 您使用的是期望字典列表而不是字典的列表。您只想DictWriter.writer

  • 问题内容: 我已经看到这个问题问过其他平台/语言-有什么想法吗?我想做类似的事情: 我希望能够在调试时切换键盘输入作为脚本的开始,这样我就可以花点时间启动chrome来监听我的节点检查器端口。 ***快速更新-我猜我实际上可以使用“ process.argv”来检测–debug是否传入。这是最佳/正确的方法吗? 问题答案: 在调试模式下运行时,NodeJS创建一个全局对象: 因此,可能的解决方案是

  • 我写了一个合并两个csv文件的Python脚本,现在我想在最后的csv中添加一个头。我试图遵循这里报告的建议,我得到了以下错误:。解决这个问题最重要的方法是什么? 以下是我正在使用的代码:

  • 本文向大家介绍Python中的CSV文件使用"with"语句的方式详解,包括了Python中的CSV文件使用"with"语句的方式详解的使用技巧和注意事项,需要的朋友参考一下 是否可以直接使用with语句与CSV文件?能够做这样的事情似乎很自然: 但是csv.reader不提供__enter__和__exit__方法,所以这不行.但是我可以分两步做: 这是第二种方式吗?为什么他们不会使csv.re

  • 问题内容: 我正在做一个项目,我们在Java服务和以其他各种语言编写的客户端之间进行大量的远程对象传输。考虑到我们当前的限制,我决定查看基于现有Java类生成代码所需要的内容。基本上,我需要获取一个文件(或它们的集合)来解析字节码,以确定所有数据成员,甚至可能是getter / setter,然后编写一些可以输出不同语言代码的内容,以创建具有相同结构的类。 我不是在寻找像JAD这样的标准反编译器。

  • 问题内容: 我需要在Python中通过http下载多个文件。 最明显的方法就是使用urllib2: 但我不得不面对以某种方式是讨厌的网址,这样说:。通过浏览器下载时,文件具有人类可读的名称,即。。 有什么办法可以在python中处理它,所以我不需要知道文件名并将其硬编码到脚本中? 问题答案: 像这样的下载脚本往往会推送一个标题,告诉用户代理该文件的名称: 如果可以获取该标头,则可以获取正确的文件名

  • 问题内容: 我有一个CSV文件,例如 我想加上引号使它像: 最快的方法是什么?我将在cronjob中实现它。 问题答案: 使用sed: