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



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

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

方言分隔符 用于分隔字段的单字符字符串。它 默认为","。

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

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

这是创建新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

最新更新