Перевернуть весь текст в HTML, используя «BeautifulSoup» и «upsidedown» - PullRequest
1 голос
/ 02 мая 2019

Я ищу способ безопасно перевернуть весь текст в HTML с использованием библиотек python BeautifulSoup и upsidedown.

from bs4 import BeautifulSoup
import upsidedown

soup = BeautifulSoup('''<p>Paragraph1</p> <p>Paragraph2</p>'''
, 'html.parser')
tags = soup.findAll('p')

for tag in tags:
    for c in tag.contents:
        c.string = upsidedown.transform(c.string)

print(soup)

Ожидаемый результат: <p>ІɥdɐɹƃɐɹɐԀ</p> <p>ᘔɥdɐɹƃɐɹɐԀ</p>

Фактический вывод: <p>Paragraph1</p> <p>Paragraph2</p>

Мне также хотелось бы получить несколько советов о том, как перевернуть текст в более сложных HTML.Например, если у меня есть вложенные теги, я не хочу переворачивать сами теги, потому что это сделает синтаксис HTML недействительным.

1 Ответ

1 голос
/ 02 мая 2019

Вы должны использовать replace_with() метод.Вам просто нужно изменить следующую строку:

c.string = upsidedown.transform(c.string)

на

c.string.replace_with(upsidedown.transform(c.string))

ПОЛНЫЙ КОД:

from bs4 import BeautifulSoup
import upsidedown

soup = BeautifulSoup('''<p>Paragraph1</p> <p>Paragraph2</p>'''
, 'html.parser')
tags = soup.findAll('p')

for tag in tags:
    for c in tag.contents:
        c.string.replace_with(upsidedown.transform(c.string))
print(soup)

ВЫХОД:

   <p>ІɥdɐɹƃɐɹɐԀ</p> <p>ᘔɥdɐɹƃɐɹɐԀ</p>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...