첫째, 당신은 마법 같은 취급 아무것도 "보편적 인"또는 "스마트"전환을 작성할 수 없습니다.
둘째, 코드 이외의 다른 것으로 문자열 - 데이터 변환을 요약하려고 시도하면 결코 잘 해결되지 않는 것 같습니다. 따라서 변환의 이름을 지정하는 문자열을 작성하는 대신 변환을 작성하십시오.
마지막으로, 도메인 특정 언어로 구성 파일을 쓰려고하면 어리석은 일입니다. 그냥 파이썬 코드를 작성하십시오. 구성 파일을 구문 분석하는 것보다 훨씬 복잡합니다.
다른 것들을 할 필요가 있습니까?
파이썬이 아닌 "유형 파일"을 만들려고 시간을 낭비하지 마십시오. 도움이되지 않습니다. 변환을 파이썬 함수로 작성하는 것이 더 간단합니다. 해당 함수를 "유형 파일"처럼 가져올 수 있습니다. 당신이 당신의 "형식 파일"
이제
당신이 읽을 수 (및 프로세스)이 같은 귀하의 의견에 모두의
import datetime
def convert(row):
return dict(
id= int(row['id']),
value= str(row['value']),
date= datetime.datetime.strptime(row['date],"%Y-%m-%d %H:%M:%S"),
)
.많은 경우에
from type_file import convert
import csv
with open("date", "rb") as source:
rdr= csv.DictReader(source)
for row in rdr:
useful_row= convert(row)
은 내가 열 수 또는 이것은 당신이 운명을 의미 런타임
전에 데이터 유형을 알 수 없습니다.
파일 내용이 실제 정의되어 있어야합니다. 그렇지 않으면 처리 할 수 없습니다.
"id","value","other value"
1,23507,3
"23507"은 (일 또는 초) 정수, 문자열, 우편 번호, 또는 (기간을 생략) 부동 소수점, 기간해야하는 경우가 모르는
또는 일부 다른 복잡한 일. 희망을 가질 수없고 추측 할 수 없습니다.
정의를 얻은 후에는 실제 정의에 따라 명시 적 변환 함수를 작성해야합니다.
변환을 작성한 후에는 (a) 간단한 단위 테스트로 변환을 테스트하고 (b) 데이터가 실제로 변환되는지 테스트해야합니다.
그런 다음 파일을 처리 할 수 있습니다.
**이 ** ** 질문에 올바르게 대답하지만 실제로는 좋지 않습니다. 수많은 제한이 있습니다. 예를 들어 기본 단일 변수 전환으로 제한됩니다. 예를 들어 datetime 형식을 변경하면 입력에 적용 할 수있는 형식 문자열을 사용하여 클로저가 작성됩니다. 이것은 상당히 복잡한 코드로 빠르게 옮겨져보다 간단한 대안이있을 때에도'getattr()'과'cls()'가 강제로 작동 될 수 있습니다. –
"type"을 호출해서는 안됩니다. – dugres
그런데 유형 (a)에서 대신에 'int'를 얻도록 지정하는 것이 유용 할 수 있습니다 (a가 int 유형의 변수 인 경우). type (이름__. 그러나 와 같은 유형의 경우 'float64'가 반환되고 'numpy.float64'는 반환되지 않습니다. 따라서 상황에 따라 str (type (anObject)). split (" '"[1])을 사용할 수도 있습니다. –