41
tworzenie plików CSV z csv.DictReader jest wielki - ale mam pliki CSV z linii komentarz w (wskazane przez wartość mieszania na początku linii), na przykład:Python: pomiń komentarz linie oznaczone # w 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
Moduł CSV doesn't include any way to skip such lines.
Mogę łatwo zrobić coś hacky, ale wyobrażam sobie, że istnieje dobry sposób na owinięcie csv.DicReader wokół jakiegoś innego obiektu iteratora, który preprocesuje, aby odrzucić linie.
To będzie przeczytać cały plik do pamięci. Jeśli nie jest zbyt duży, to nie ma problemu, w przeciwnym razie możesz użyć wyrażenia generatora lub 'itertools.ifilter()'. – Duncan
... lub wyrażenie generatora: 'csv.DictReader (wiersz dla wiersza w fp, jeśli nie wiersz.startyz ('#'))' –
@Duncan nie ma potrzeby itertools w Python3.6, jako 'filter() 'zwróci domyślnie iterator, dlatego plik nie zostanie załadowany do pamięci. –