@@ -271,45 +271,45 @@ def _parse_header(new_data, matched, value, key):
271271 newvalue = literal_eval (value )
272272 if newvalue == "-" :
273273 newvalue = np .nan # trap for missing float value
274- if matched :
275- key = matched .groups ()[0 ]
276- idx = int (matched .groups ()[1 ])
277- if key in new_data .metadata and not isinstance (new_data [key ], (np .ndarray , list )):
278- if isinstance (new_data [key ], str ):
279- new_data [key ] = list ([new_data [key ]])
280- if idx > 1 :
281- new_data [key ].extend (["" ] * idx - 1 )
282- else :
283- new_data [key ] = np .array (new_data [key ])
284- if idx > 1 :
285- new_data [key ] = np .append (new_data [key ], np .ones (idx - 1 ) * np .nan )
286- if key not in new_data .metadata :
287- if isinstance (newvalue , str ):
288- listval = ["" ] * (idx + 1 )
289- listval [idx ] = newvalue
290- new_data [key ] = listval
291- else :
292- arrayval = np .ones (idx + 1 ) * np .nan
293- arrayval = arrayval .astype (type (newvalue ))
294- arrayval [idx ] = newvalue
295- new_data [key ] = arrayval
274+ if not matched :
275+ new_data .metadata [key ] = newvalue
276+ return new_data
277+ key = matched .groups ()[0 ]
278+ idx = int (matched .groups ()[1 ])
279+ if key in new_data .metadata and not isinstance (new_data [key ], (np .ndarray , list )):
280+ if isinstance (new_data [key ], str ):
281+ new_data [key ] = list ([new_data [key ]])
282+ if idx > 1 :
283+ new_data [key ].extend (["" ] * idx - 1 )
296284 else :
297- if isinstance (new_data [key ][0 ], str ) and isinstance (new_data [key ], list ):
298- if len (new_data [key ]) < idx + 1 :
299- new_data [key ].extend (["" ] * (idx + 1 - len (new_data [key ])))
300- new_data [key ][idx ] = newvalue
301- else :
302- if idx + 1 > new_data [key ].size :
303- new_data [key ] = np .append (
304- new_data [key ],
305- (np .ones (idx + 1 - new_data [key ].size ) * np .nan ).astype (new_data [key ].dtype ),
306- )
307- try :
308- new_data [key ][idx ] = newvalue
309- except ValueError :
310- pass
285+ new_data [key ] = np .array (new_data [key ])
286+ if idx > 1 :
287+ new_data [key ] = np .append (new_data [key ], np .ones (idx - 1 ) * np .nan )
288+ if key not in new_data .metadata :
289+ if isinstance (newvalue , str ):
290+ listval = ["" ] * (idx + 1 )
291+ listval [idx ] = newvalue
292+ new_data [key ] = listval
293+ else :
294+ arrayval = np .ones (idx + 1 ) * np .nan
295+ arrayval = arrayval .astype (type (newvalue ))
296+ arrayval [idx ] = newvalue
297+ new_data [key ] = arrayval
311298 else :
312- new_data .metadata [key ] = newvalue
299+ if isinstance (new_data [key ][0 ], str ) and isinstance (new_data [key ], list ):
300+ if len (new_data [key ]) < idx + 1 :
301+ new_data [key ].extend (["" ] * (idx + 1 - len (new_data [key ])))
302+ new_data [key ][idx ] = newvalue
303+ else :
304+ if idx + 1 > new_data [key ].size :
305+ new_data [key ] = np .append (
306+ new_data [key ],
307+ (np .ones (idx + 1 - new_data [key ].size ) * np .nan ).astype (new_data [key ].dtype ),
308+ )
309+ try :
310+ new_data [key ][idx ] = newvalue
311+ except ValueError :
312+ pass
313313 return new_data
314314
315315
0 commit comments