Как получить текст с пробелами?

Берём таблицу из https://www.sravni.ru/bank/gazprombank/debetovaja-karta/visagold/umnaya/?currency=RUB введите сюда описание изображения Есть такой код:

import requests
from lxml import html
from bs4 import BeautifulSoup

url = 'https://www.sravni.ru/bank/gazprombank/debetovaja-karta/visagold/umnaya/?currency=RUB'
r = requests.get(url)
page = r.text
def get_table():
    
    data = []
    global page
    import unicodedata
    un = unicodedata.normalize
    soup = BeautifulSoup(page, "html.parser") 
    
    table = soup.find('table')
    table_body = table.find('tbody')

    rows = table_body.find_all('tr')

    for row in rows:
        cols = row.find_all('td')
        cols = [un("NFKD",ele.text.strip())+' ' for ele in cols]#
        data.append([ele for ele in cols if ele]) 
    return data

print(get_table())

Получаем .. введите сюда описание изображения

А как получить с пробелами ?


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

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

Ответ подсмотрел здесь.

Замените это:

ele.text.strip()

На такую конструкцию:

" ".join(item.strip() for item in ele.find_all(text=True))

Результат:

[['SMS-информирование ', 'Первый 3 мес Бесплатно Следующий мес 59 ₽ '], ['Обслуживание Обслуживание дополнительной карты ', 'Бесплатно , если сумма покупок от 5000 ₽ или сумма остатка от 30000 ₽ 99 ₽ в месяц, если сумма покупок до 4999 ₽ или сумма остатка до 29999 ₽ дополнительно не взимается: при поступлении зарплаты на карту банка в сумме от 15 000 ₽; при наличии у клиента действующего кредитного договора, заключенного в банке '], ['Выпуск карты ', 'Бесплатно '], ['Выпуск дополнительной карты ', '200 ₽ 1 дополнительная карта бесплатно '], ['Перевыпуск карты ', '300 ₽ '], ['Снятие собственных средств  в банкомате своего банка Снятие собственных средств  в офисах своего банка ', 'Бесплатно '], ['Снятие собственных средств  в банкомате стороннего банка Снятие собственных средств  в банкомате банка-партнера Снятие собственных средств  в офисах стороннего банка Снятие собственных средств  в офисах банка-партнера ', '1.5% от суммы операции, но не менее чем 200 ₽ бесплатно первые 3 операции в месяц на сумму до 100 000 ₽; со списком банков-участников корпоративной сети можно ознакомиться на сайте банка '], ['Лимит:  наличные ', 'до 200000 ₽ в день '], ['Лимит:  наличные ', 'до 1500000 ₽ в месяц ']]

Правда, в этом случае будут наоборот местами лишние пробелы.

Если убрать ещё +' ', то хотя бы в конце лишних пробелов не будет.

→ Ссылка