Как заменить текст между тегами <span>в BeautifulSoup? - PullRequest
0 голосов
/ 21 октября 2019

Я определил переменную price:

price = '7.12'

И я пытаюсь заменить 0.00 в <span class="rec-item-cost">0.00</span> на price.

Я определил soupPrice, чтобы получить 0.00 из тегов.

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.text

И тогда я попытался:

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.text.replace_with(price)

Что приводит к ошибке:

AttributeError: 'str' object has no attribute 'replace_with'

Поэтому я попытался удалить часть кода .text:

soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span.replace_with(price)

И на этот раз, если я напишу print(soupPrice), я просто получу:

<span class="rec-item-cost">0.00</span>

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

Ответы [ 2 ]

1 голос
/ 21 октября 2019

Согласно документации вы можете использовать replaceWith

from bs4 import BeautifulSoup as bs

html = '''<span class="rec-item-cost">0.00</span'''
soup = bs(html, 'lxml')
price = '7.12'
soup.select_one('.rec-item-cost').contents[0].replaceWith(price)
print(soup)
1 голос
/ 21 октября 2019

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

price = 7.12
soupPrice = BeautifulSoup('<span class="rec-item-cost">0.00</span>', 'lxml').span
new_price = str(soupPrice).replace(soupPrice.text,str(price))
print(new_price)

Вывод:

<span class="rec-item-cost">7.12</span>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...