@@ -213,11 +213,13 @@ async def write_one_geocoding_result(self, csv_output, row_id, geocoding_result,
213213 if geocoding_result is None :
214214 row .append ('' )
215215 elif column in geocoding_result :
216- row .append (geocoding_result [column ])
216+ row .append (self . deep_get_result_value ( geocoding_result , [column ], '' ) )
217217 elif column in geocoding_result ['components' ]:
218- row .append (geocoding_result ['components' ][ column ])
218+ row .append (self . deep_get_result_value ( geocoding_result , ['components' , column ], '' ) )
219219 elif column in geocoding_result ['geometry' ]:
220- row .append (geocoding_result ['geometry' ][column ])
220+ row .append (self .deep_get_result_value (geocoding_result , ['geometry' , column ], '' ))
221+ elif column == 'FIPS' :
222+ row .append (self .deep_get_result_value (geocoding_result , ['annotations' , 'FIPS' , 'county' ], '' ))
221223 else :
222224 row .append ('' )
223225
@@ -235,7 +237,14 @@ async def write_one_geocoding_result(self, csv_output, row_id, geocoding_result,
235237 csv_output .writerow (row )
236238 self .write_counter = self .write_counter + 1
237239
238-
239240 def log (self , message ):
240241 if not self .options .quiet :
241242 sys .stderr .write (f"{ message } \n " )
243+
244+ def deep_get_result_value (self , data , keys , default = None ):
245+ for key in keys :
246+ if isinstance (data , dict ):
247+ data = data .get (key , default )
248+ else :
249+ return default
250+ return data
0 commit comments