私は、普通の方法でPythonでCSVファイルを読む方法を完全に認識しています。リストを解析できることも承知しています(例:["a, b, 123"]
)。どちらもジェネレータと利回りのために動作します。csv古い方法を読む
私の問題が若干異なります。
- 入力が
dict
{"line": "a, b, 123", "line_count": 555, ..}
のような出力が同じ
dict
が
{"line": "a, b, 123", "line_count": 555, .., "csv": ["a", "b", "c"]}
よう"csv"
属性を簡単かつ非常に伝統的に延長すべきですアプローチは(擬似コード):
def my_csv_reader(myconfig):
my_reader = CsvReader(**myconfig)
for line in some_gen_providing_the_list_of_dicts:
line["csv"] = csv.reader(line["line"]) (1)
yield line
私は実際にマークされた行(1)を交換することにより、このアプローチを使用することができるよ:
line["csv"] = csv.reader([line["line"]], **myconfig) (1)
しかし、私は500のMIO行を解析する必要があり、一つ一つのライン用のCSVオブジェクトの作成と初期化おそらくたくさんのゴミを作り、実際には不要です。私はまた、ヘッダー行、DictReader
、等はもはや組み込みになりません。
- csv
reader
オブジェクトを作成します。 - 退屈な古い形式の
to_csv(my_line)
関数を呼び出し、その行のcsvを返します。
Python 3.xで何とか可能ですか?
いいえ、伝統的な方法は、ファイルオブジェクトのような行の繰り返し可能性からCSVリーダーを作成して、各行に別々のリーダーを作成しないことです。 – TigerhawkT3