我有一个文件,该文件使用n
作为字段定界符,并使用\x01
作为行终止符。这是文件头的示例:
\x02\n
使用 #export_date\x01artist_id\x01name\x01is_actual_artist\x01view_url\x01artist_type_id\x02\n
时,我得到以下信息:
{' module ':'csv','_name':'sniffed','lineterminator':'\ r \ n','quoting':0,' doc < / strong>”:无,“ doublequote”:False,“ delimiter”:“ \ x01”,“ quotechar”:“”,“ skipinitialspace”:False}
以下三个字段是什么意思:
上面没有任何引号,因此我假设csv.Sniffer()
应该为空而不是双引号,但是对这三个字段的任何解释都很好。
此外,我还尝试了其他一些文件,无论该文件是否带引号,它似乎总是能提供这三个字段的准确输出。
答案 0 :(得分:0)
查看文档
控制出现在字段中的quotechar实例本身应如何被引用。当为True时,字符加倍。如果为False,则将escapechar用作quotechar的前缀。默认为True。
一个单字符字符串,用于引用包含特殊字符(例如定界符或quotechar)或包含换行符的字段。默认为“”。
控制引号何时由作者生成并由读者识别。它可以采用任何QUOTE_ *常量(请参见模块内容),默认为QUOTE_MINIMAL。
答案 1 :(得分:0)
Dialects and Formatting Paramteres docs中涵盖了这些字段:
- quoting:控制引号何时应由作者生成并由读者识别。它可以采用任何QUOTE_ *常量(请参见模块内容),默认为QUOTE_MINIMAL。
- doublequote:控制出现在字段中的quotechar实例本身应如何被引用。当为True时,字符加倍。如果为False,则将escapechar用作quotechar的前缀。默认为True。在输出中,如果双引号为False且未设置任何转义符,则在字段中找到quotechar时将引发错误。
- quotechar:一个单字符字符串,用于引用包含特殊字符(例如定界符或quotechar)或包含换行符的字段。默认为“”。
关于:
上面没有任何引号,因此我认为quotechar应该为空而不是双引号,但是对这三个字段的任何解释都很好。
CPython csv.py
库中有一条评论指出:
# _csv.reader won't accept a quotechar of ''`
来源:https://github.com/python/cpython/blob/2ef69a1d45de8aa41c45d32d9ee1ff227bb1a566/Lib/csv.py#L198
在您的情况下,如果没有报价,则可能要使用csv.QUOTE_NONE
。嗅探器可能无法为您解决这个问题。