Python: Верните пустое значение и продолжите цикл после исключения

#python #exception

Вопрос:

У меня есть цикл for, в котором я использую ключ API для возврата некоторых значений в CSV. Я хочу, чтобы цикл возвращал пустую строку каждый раз, когда возникает ошибка, а не взлом кода. Я знаю, что мне нужно использовать continue , но не знаю, как вставить пустую строку для каждого indexError , что я получаю.

Я написал вызываемую функцию get_data , которая возвращает текст ответа из API. Поэтому, используя это, я пытаюсь запустить вот что для входного файла df

 d = [] try:   for i in range(len(df)):  output = df.loc[i,"column_1"]   d.append(get_data(output))  lat = pd.DataFrame(d)  lat_lon= lat.apply(pd.Series)  f = open('results.csv','w')  lat_lon.to_csv('results.csv') except IndexError:   print('ERROR at index {}: {!r}'.format(i, address))  

Я хочу, чтобы выходной csv-файл results.csv оставлял пустую строку каждый раз, когда indexError

Ответ №1:

try/except нужно быть внутри петли. В противном случае вы прерываете весь цикл при возникновении исключения.

Кроме того, вы не должны записывать CSV-файл каждый раз в цикле. Напишите его в конце с полным содержанием d .

 d = [] for i in range(len(df)):  try:   output = df.loc[i,"column_1"]   d.append(get_data(output))  except IndexError:   print('ERROR at index {}: {!r}'.format(i, address))  d.append([default row goes here]) lat = pd.DataFrame(d) lat_lon= lat.apply(pd.Series) f = open('results.csv','w') lat_lon.to_csv('results.csv')  

Комментарии:

1. Спасибо! Но смущен тем, что d.append([default row goes here]) делает

2. Я не знаю, сколько элементов должно быть в списке. Поэтому я просто поместил это в качестве заполнителя, вы можете заменить его списком, содержащим нужное количество пустых строк.

3. Ааа, попался! Спасибо, это было очень полезно