41
處理具有csv.DictReader的CSV文件非常棒 - 但我有註釋行(在行首以散列表示)中的CSV文件,例如:Python:在csv.DictReader中跳過標註#的註釋行
# step size=1.61853 val0,val1,val2,hybridisation,temp,smattr 0.206895,0.797923,0.202077,0.631199,0.368801,0.311052,0.688948,0.597237,0.402763 -169.32,1,1.61853,2.04069e-92,1,0.000906546,0.999093,0.241356,0.758644,0.202382 # adaptation finished
csv模塊doesn't include any way to skip such lines。
我可以很容易地做一些黑客行爲,但我想有一種很好的方式來將csv.DicReader包裝在其他一些迭代器對象周圍,這些對象會預處理以放棄行。
將讀取整個文件到內存中。如果它不是太大那麼沒有問題,否則你可能想要使用生成器表達式或'itertools.ifilter()'。 – Duncan
...或者一個生成器表達式: 'csv.DictReader(row for fp if row.startswith('#'))' –
@Duncan不需要Python3.6中的itertools,因爲'filter() '會默認返回一個迭代器,因此該文件不會被加載到內存中。 –