Обработка файлов CSV с csv. DictReader является большим - но у меня есть файлы CSV со строками комментария в (обозначенный хешем в начале строки), например:
# 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 модуль не включает способа пропустить такие строки.
Я мог легко сделать что-то hacky, но я предполагаю, что существует хороший способ перенести csv. DicReader вокруг некоторого другого объекта итератора, который предварительно обрабатывает для отбрасывания строк.
Другой способ прочитать файл CSV использует pandas
, Вот пример кода:
df = pd.read_csv('test.csv',
sep=',', # field separator
comment='#', # comment
index_col=0, # number or label of index column
skipinitialspace=True,
skip_blank_lines=True,
error_bad_lines=False,
warn_bad_lines=True
).sort_index()
print(df)
df.fillna('no value', inplace=True) # replace NaN with 'no value'
print(df)
Для этого файла CSV:
a,b,c,d,e
1,,16,,55#,,65##77
8,77,77,,16#86,18#
#This is a comment
13,19,25,28,82
мы получим этот вывод:
b c d e
a
1 NaN 16 NaN 55
8 77.0 77 NaN 16
13 19.0 25 28.0 82
b c d e
a
1 no value 16 no value 55
8 77 77 no value 16
13 19 25 28 82