读取csv.Sniffer()的输出

时间:2018-12-18 17:48:12

标签: python csv

我有一个文件,该文件使用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}

以下三个字段是什么意思:

  • 引用
  • quotechar
  • 双引号

上面没有任何引号,因此我假设csv.Sniffer()应该为空而不是双引号,但是对这三个字段的任何解释都很好。

此外,我还尝试了其他一些文件,无论该文件是否带引号,它似乎总是能提供这三个字段的准确输出。

2 个答案:

答案 0 :(得分:0)

查看文档

  • 方言双引号
  

控制出现在字段中的quotechar实例本身应如何被引用。当为True时,字符加倍。如果为False,则将escapechar用作quotechar的前缀。默认为True。

  • Dialect.quotechar
  

一个单字符字符串,用于引用包含特殊字符(例如定界符或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。嗅探器可能无法为您解决这个问题。