首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python strict CSV DictReader

Python strict CSV DictReader
EN

Stack Overflow用户
提问于 2020-03-19 20:11:17
回答 1查看 263关注 0票数 0

我想测试糟糕的CSV输入数据,但我无法模拟它。

我的代码是:

代码语言:javascript
复制
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)

在我的任何数据文件上使用dialect.strict = True或dialect.strict = False都没有区别。有人可以向我展示当dialect.strict = True时CSV数据抛出错误,当dialect.strict = False时没有异常吗?

Python文档参考:https://docs.python.org/3/library/csv.html#csv.Dialect.strict

EN

回答 1

Stack Overflow用户

发布于 2020-03-19 21:15:01

设置dialect.strict = True将使阅读器在输入数据没有匹配的结束引号时引发异常。

例如:

代码语言:javascript
复制
import csv
from io import StringIO

fd = StringIO('''a,b
x,"y''')
dialect = csv.Sniffer().sniff(fd.readline(), delimiters=',;')
dialect.strict = False
fd.seek(0)
reader = csv.DictReader(fd, dialect=dialect)
for row in reader:
    print(row)

将输出:

代码语言:javascript
复制
{'a': 'x', 'b': 'y'}

但是设置dialect.strict = True会产生如下结果:

代码语言:javascript
复制
_csv.Error: unexpected end of data
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60757001

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档