You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python CSV严格模式测试:求触发报错的异常CSV示例

如何触发CSV Dialect strict模式的差异?

我懂你现在的困扰——明明设置了dialect.strict=True,但测试下来和False没区别,根本触发不了预期的错误。先看看你这段代码:

dialect = csv.Sniffer().sniff(fd.readline(), delimiters=',;')
dialect.strict = True
fd.seek(0)
reader = csv.DictReader(fd, dialect=dialect)
for row in reader:
    print(row)

要触发strict=True的异常,你需要构造CSV格式不符合规范且超出模块默认容错范围的数据。根据Python的csv模块定义,strict=True会强制要求输入严格遵循CSV格式,一旦发现格式错误(比如不匹配的引号、错误的字段分隔位置)就抛出csv.Error;而strict=False时,模块会尝试忽略这些错误继续解析。

给你一个能精准触发差异的测试CSV数据:

name,age,email
Alice,30,"alice@example.com
Bob,25,bob@example.com"
Charlie,35,"charlie@example.com"

为什么这段数据能触发差异?

  • 第一行Alice的email字段用双引号开头,但未闭合就换行到下一行
  • 第二行Bob的email字段用双引号结尾,但开头没有对应的引号

当你把这段数据存成test.csv后:

  1. 设dialect.strict=True运行代码,会直接抛出格式错误类的csv.Error
  2. 设dialect.strict=False运行代码,模块会尝试容错解析(比如把Alice和Bob的行错误合并),但不会抛出异常

之前你测试的数据可能只是模块默认就能兼容的小问题(比如多余空格),所以没触发strict模式的差异。用上面这个例子就能明显看到两种模式的区别了。

内容的提问来源于stack exchange,提问作者Pavel Madr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 23:38:10