所以我试图理解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
这个函数的问题是'转换器'。它始于None。然后再'func =转换器[j]'j我知道这是一个通过枚举创建的数字。所以它正在寻找由j索引的相应转换器项目。但是在转换器中没有任何东西,因为它是没有对的?除非python程序不必从顶部到底部读取?在这种情况下,我们从后面两行“如果len(item.st ....等)”或从“else:”部分获得func。但是,我只是假定它必须从上到下阅读。
我不知道其他的东西是否重要,所以我只包含了整个功能。 converterd是一个字典映射,我相信用户可以提供一个参数来自动找到一个转换器。 checkrows只是用户在开始检查有效性时作为参数提供的一个数字。它是默认的无。我仍然是一个初学者,所以只是fyi。 =)
谢谢大家。这个网站非常有帮助!