所以我试图理解 matplotlib.mlab 中 csv2rec 的源文件。它用于获取 csv 文件并将数据解析为特定格式。所以它可能需要一个字符串'234'并将其转换为int。或取一个日期字符串并将其转换为 python 日期时间。
def get_converters(reader):
converters = None
for i, row in enumerate(reader):
if i==0:
converters = [mybool]*len(row)
if checkrows and i>checkrows:
break
#print i, len(names), len(row)
#print 'converters', zip(converters, row)
for j, (name, item) in enumerate(zip(names, row)):
func = converterd.get(j)
if func is None:
func = converterd.get(name)
if func is None:
#if not item.strip(): continue
func = converters[j]
if len(item.strip()):
func = get_func(name, item, func)
else:
# how should we handle custom converters and defaults?
func = with_default_value(func, None)
converters[j] = func
return converters
我对这个功能的问题是“转换器”。它从无开始。然后稍后 'func = converters[j]' j 我知道是一个刚刚通过枚举创建的数字。因此它正在寻找由 j 索引的相应转换器项。但是转换器中什么都没有,因为它是 None 对吗?除非python程序不必从上到下阅读?在这种情况下,我们从接下来的两行“if len(item.st....etc)”或“else:”部分获取 func。但是,我只是假设它必须从上到下阅读。
我不知道其他任何事情是否重要,所以我只包含了整个功能。convertd 是一个字典映射,我相信用户可以提供作为参数来自动查找转换器。checkrows 只是用户在开始时作为参数提供的一个数字,用于检查有效性。默认为无。我还是一个初学者,所以仅供参考。=)
谢谢大家。这个网站太有帮助了!