Python если заявление и назначение - PullRequest
0 голосов
/ 24 апреля 2020

Я работаю с BeautifulSoup в Python для анализа XML. Я чувствую, что мне нужно написать код, который выглядит следующим образом:

for document in soup.find_all('document'):
    if document.find('doc-number'):
        doc_number = document.find('doc-number').string
    # More similar if statements further down

Я нахожу запись document.find('doc-number') дважды: один раз в операторе if и один раз в блоке if довольно громоздко и приводит к длинным строк кода.

Есть ли способ сделать код короче и больше Pythoni c?

Это Python 3.6

1 Ответ

1 голос
/ 24 апреля 2020

С python 3.8,

for document in soup.find_all('document'):
    if (doc := document.find('doc-number')) is not None:
        doc_number = doc.string

Это так называемые выражения присваивания. https://www.python.org/dev/peps/pep-0572/

Редактировать: Вы только что обновили версию python до 3,6, Для версий менее 3.8 @jonrsharpe - лучший ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...