Проблемы с анализом данных в python // html - PullRequest
0 голосов
/ 07 мая 2020

Ссылки:

основной код

html

Мне интересно, почему моя вторая строка кода возвращает None значений. Насколько я понимаю, строка In[194] применяет функцию по индексу [-1], «Перепись США», ищет знаки % и затем превращает оставшееся числовое значение с s[:-1] в целое число.

Я считаю, что после третьего X% есть пробел. Я пробовал код ... s [-1] == ('%' или '%') ... чтобы решить проблему, но я действительно не думаю, что это решит ее.

Что здесь не так с созданием None s? Как исправить и получить правильные значения - 5,12,16,64,9, «Нет».

1 Ответ

0 голосов
/ 07 мая 2020

Проблема, похоже, в том, что в исходном HTML источнике, который вы разбираете, есть пустые элементы <td>. Есть простое дополнение if к концу вашего понимания списка, которое удалит значения None из вашего списка:

values = [to_num(value.get_text()) for row in rows[1:] for value in row.find_all("td") if to_num(value.get_text())]

Также существуют альтернативные варианты, такие как уточнение запроса find_all (предположительно Beautiful Soup? ), чтобы быть более конкретным c (например, все ли элементы <td>, о которых вы заботитесь, имеют идентификаторы или классы?), или, возможно, вы могли бы упростить оператор if в понимании списка.

...