所以我試圖理解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。 =)
謝謝大家。這個網站非常有幫助!