首页 > 解决方案 > “TypeError:如果启用引用,则必须设置quotechar”在csv模块中

问题描述

从配置中创建csv.DictReader带有参数的参数时(如果未设置,则使用默认值),我收到以下错误消息:

File "/Users/deangurvitz/temp.py", line 89, in <module>
  with csv.DictReader(f, quotechar=None) as reader:
File ".../3.7/lib/python3.7/csv.py", line 87, in __init__
  self.reader = reader(f, dialect, *args, **kwds)
TypeError: quotechar must be set if quoting enabled

相关的代码片段是:

delimiter = config.csv_separator if config.csv_separator else ','
escape_char = config.csv_escape if config.csv_escape else None
quote_char = config.csv_quote if config.csv_quote else None
return csv.DictReader(file, delimiter=delimiter, escapechar=escape_char, quotechar=quote_char)

我已经偶然发现了几个处理 a TypeError: “quotechar” must be an 1-character string(例如this one)的问题,但这里不是这种情况,因为quotechar参数没有被赋予无效值。问题的根源可能是什么?

标签: pythoncsv

解决方案


这种情况下的问题是我None向参数传递了一个值quotechar,只有在使用附加参数显式禁用引用时才允许这样做quoting=QUOTE_NONE(有关这些格式参数的更多信息在官方文档中给出)。参数的默认值quotechar不是None,而是'"',并且在我的代码中使用它作为默认值也解决了这个问题。


推荐阅读