まず、魔法のように何かを処理する「ユニバーサル」または「スマート」な変換を作成することはできません。
第二に、コード以外の何かで文字列からデータへの変換を要約しようとすると、うまくいかないようです。したがって、変換に名前を付ける文字列を記述するのではなく、変換を記述するだけです。
最後に、ドメイン固有言語で構成ファイルを書き込もうとするのはばかげています。Pythonコードを書くだけです。いくつかの構成ファイルを解析しようとするよりもそれほど複雑ではありません。
可能ですか、それとも他のことをする必要がありますか?
単なるPythonではない「タイプファイル」を作成しようとして時間を無駄にしないでください。それは役に立ちません。変換をPython関数として記述する方が簡単です。その関数を「タイプファイル」であるかのようにインポートできます。
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)データをテストして実際に変換されていることを確認する必要があります。
次に、ファイルを処理できます。