그래서 matplotlib.mlab에서 csv2rec에 대한 소스 파일을 이해하려고합니다. csv 파일을 가져 와서 특정 형식으로 데이터를 구문 분석하는 데 사용됩니다. 따라서 '234'문자열을 가져 와서 int로 변환 할 수 있습니다. 또는 날짜 문자열을 받아 파이썬 datetimes로 만들 수 있습니다.어떻게 작동합니까?
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 = converters [j]'j 열거 형을 통해 방금 생성 된 숫자가 있습니다. 그래서 그것은 j에 의해 인덱싱 된 해당 변환기 항목을 찾고 있습니다. 그러나 변환기가 없기 때문에 아무것도 없습니다. 파이썬 프로그램을 위에서 아래로 읽을 필요가 없다면? 이 경우 다음 두 줄의 "ifen (item.st .... etc)"또는 "else :"섹션에서 func을 얻습니다. 그러나 나는 방금 위에서 아래로 읽어야한다고 생각했다.
다른 모든 것들이 중요하기 때문에 나는 전체 기능을 포함 시켰습니다. converterd는 사용자가 변환기를 자동으로 찾기위한 매개 변수로 제공 할 수 있다고 생각하는 사전 매핑입니다. checkrows는 처음에 유효성을 검사하기위한 매개 변수로 사용자가 제공 한 숫자입니다. 기본적으로 없음입니다. 나는 아직도 초보자이기 때문에 그냥 fyi. =)
모두에게 감사드립니다. 이 사이트는 매우 유용합니다!
converters = [mybool]*len(row)
하고는 다시 설정됩니다 "컨버터"