Python: пропустите строки комментария, отмеченные с # в csv. DictReader

Обработка файлов 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 вокруг некоторого другого объекта итератора, который предварительно обрабатывает для отбрасывания строк.

60
задан 4 January 2013 в 18:20

1 ответ

Другой способ прочитать файл 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
3
ответ дан 1 November 2019 в 10:37

Другие вопросы по тегам:

Похожие вопросы: