Python:csv模块Dialect类的误导性文档

时间:2018-09-13 13:18:12

标签: python python-3.x csv

documentation指出Dialect.delimiter的默认值为','。但是,当我尝试打印时,它返回None

>>> print(csv.Dialect.delimiter)
None
  

Dialect.delimiter一个用于分隔字段的单字符字符串。它     默认为','。

2 个答案:

答案 0 :(得分:2)

这是创建自己的方言时的默认值。

import csv

csv.register_dialect('my_dialect')
dialect = csv.get_dialect('my_dialect')
print(dialect.delimiter)

答案 1 :(得分:1)

这是创建新的Dialect时的默认值。您可以使用csv.get_dialect()获得一个方言实例(如果使用的是Python 3.x,则是一个不变的实例),并使用csv.register_dialect注册一个方言实例。您也可以只继承Dialect的子类,然后继续进行下去。

如果您仅阅读该行,则文档可能看起来不清楚,但是上面几行可以看到:

  

为便于指定输入和输出记录的格式,将特定的格式设置参数组合为方言。方言是方言类的子类,它具有一组特定的方法和一个validate()方法。

在REPL中进行简单的help(csv.Dialect)确认使用此类时必须进行子类化。

class Dialect(builtins.object)
 |  Describe a CSV dialect.
 |
 |  This must be subclassed (see csv.excel).  Valid attributes are:
 |  delimiter, quotechar, escapechar, doublequote, skipinitialspace,
 |  lineterminator, quoting.
 |
 |  Methods defined here:
 |
 |  __init__(self)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)
 |
 |  ----------------------------------------------------------------------
 |  Data and other attributes defined here:
 |
 |  delimiter = None
 |
 |  doublequote = None
 |
 |  escapechar = None
 |
 |  lineterminator = None
 |
 |  quotechar = None
 |
 |  quoting = None
 |
 |  skipinitialspace = None
相关问题