Как сделать, чтобы код выводил названия в столбик, а не просто списком?

from bs4 import BeautifulSoup as Soup
import requests


def page_proc(page: Soup) -> list:
    news_headers = []
    for header in page.find_all('h4', {'class': 'media-heading'}):
        news_headers.append(header.text.strip())
    return news_headers


def sandbox(base_url: str) -> list:
    headers = []
    with requests.Session() as session:
        first_page = Soup(session.get(base_url).content, 'html.parser')
        pages_qty = int(first_page.find('li', {'class': 'pager-last'}).a['href'].rpartition('=')[-1])

        headers.extend(page_proc(first_page))

        pg = Soup(session.get(base_url).content, 'html.parser')
        headers.extend(page_proc(pg))

        return headers


if __name__ == '__main__':
print(sandbox('http://hkotso.ru/novosti'))

Как сделать, чтобы код выводил названия в столбик, а не просто списком?

Вот что он выводит:

['Гигиена при гриппе, коронавирусной инфекции и других ОРВИ', 'Стань волонтёром Конституции!', 'Внимание, вакансия', '«В служении верном Отчизне клянусь»', 'Информационная встреча с представителями воинской части № 23227', 'Информационная встреча с представителями воинской части', 'Деловая игра "Собеседование с работодателем"', 'Предложение работы в воинской части', 'Итоги краевого конкурса профессионального мастерства', 'Информационная встреча и презентация «Поискового движения России»', 'Классный час "Великие женщины"', 'Спортивный праздник, приуроченный ко всемирному женскому дню', 'Бинарный урок на тему: "Классификация, ассортимент, пищевая ценность, рецептуры приготовления супов сложного приготовления"', 'Ознакомительная экскурсия по корпоративно-отраслевому музею АО «Газпром газораспределение Дальний Восток»', 'Открытие фотовыставки «Заповедники Болонского международного водно-болотного угодья»', 'Гигиена при гриппе, коронавирусной инфекции и других ОРВИ', 'Стань волонтёром Конституции!', 'Внимание, вакансия', '«В служении верном Отчизне клянусь»', 'Информационная встреча с представителями воинской части № 23227', 'Информационная встреча с представителями воинской части', 'Деловая игра "Собеседование с работодателем"', 'Предложение работы в воинской части', 'Итоги краевого конкурса профессионального мастерства', 'Информационная встреча и презентация «Поискового движения России»', 'Классный час "Великие женщины"', 'Спортивный праздник, приуроченный ко всемирному женскому дню', 'Бинарный урок на тему: "Классификация, ассортимент, пищевая ценность, рецептуры приготовления супов сложного приготовления"', 'Ознакомительная экскурсия по корпоративно-отраслевому музею АО «Газпром газораспределение Дальний Восток»', 'Открытие фотовыставки «Заповедники Болонского международного водно-болотного угодья»']


Ответы (2 шт):

Автор решения: gil9red

Попробуйте так:

for x in sandbox('http://hkotso.ru/novosti'):
    print(x)

Еще можно так:

print(*sandbox('http://hkotso.ru/novosti'), sep='\n')

Тут есть несколько небольших хитростей:

  • Семантика функции print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

  • *<список> -- оператор * в этом контексте раскладывает элементы списка по безымянным параметрам функции, эти параметры у функции называются *objects

  • По умолчанию, несколько параметров print (*objects) разделяются пробелом (см. выше на sep=' '), но мы указываем значение '\n', что разделяет элементы новой строкой
→ Ссылка
Автор решения: Xander

Объёмные списки и словари (в том числе с несколькими уровнями вложенности) удобно смотреть с помощью модуля pprint.

Просто импортируйте его и используйте вместо стандартного print:

from pprint import pprint

pprint(big_list_or_dict)
→ Ссылка