我想测试糟糕的CSV输入数据,但我无法模拟它。
我的代码是:
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
发布于 2020-03-19 21:15:01
设置dialect.strict = True将使阅读器在输入数据没有匹配的结束引号时引发异常。
例如:
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)将输出:
{'a': 'x', 'b': 'y'}但是设置dialect.strict = True会产生如下结果:
_csv.Error: unexpected end of datahttps://stackoverflow.com/questions/60757001
复制相似问题