Найти подстроку с помощью python - PullRequest
0 голосов
/ 10 февраля 2020

Я извлек необработанную строку из форума вопросов и ответов. У меня есть такая строка:

s = 'Take about 2 + <font color="blue"><font face="Times New Roman">but double check with teacher <font color="green"><font face="Arial">before you do'

Я хочу извлечь эту подстроку "<font color="blue"><font face="Times New Roman">" и назначить ее новой переменной. Я могу удалить его с помощью регулярных выражений, но я не знаю, как назначить его для новой переменной. Я новичок в regex.

import re
s1 = re.sub('<.*?>', '', s)

Это удаляет саб, но я бы хотел сохранить удаленный саб для записи, в идеале переназначить его на varialbe.

Как я могу сделай это? Я могу предпочесть регулярные выражения.

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Хотя bs4 больше подходит для создания веб-страниц, но если вы согласны с регулярным выражением для вашего случая, вы можете выполнить следующие действия:

>>> import re
>>> s = 'Take about 2 + <font color="blue"><font face="Times New Roman">but double check with teacher <font color="green"><font face="Arial">before you do'
>>> regex = re.compile('<.*?>')
>>> regex.findall(s)
['<font color="blue">', '<font face="Times New Roman">', '<font color="green">', '<font face="Arial">']
>>> regex.sub('', s)
'Take about 2 + but double check with teacher before you do'
0 голосов
/ 10 февраля 2020

Regex - не самый простой инструмент для анализа HTML компонентов. Вы можете использовать BeautifulSoup для анализа компонентов и создания подстроки.

from bs4 import BeautifulSoup

s = """Take about 2 + <font color="blue">
       <font face="Times New Roman">but double check with teacher <font color="green">
       <font face="Arial">before you do"""


soup = BeautifulSoup(s, "html.parser")

Распечатать html:

Take about 2 +
<font color="blue">
 <font face="Times New Roman">
  but double check with teacher
  <font color="green">
   <font face="Arial">
    before you do
   </font>
  </font>
 </font>
</font>

Извлечь компоненты:

soup.font.font['face']
> 'Times New Roman'
soup.font["color"]
> 'blue'

Теперь создайте и сохраните подстроку как переменную:

variable = f"<font color={soup.font.font['face']}><font face={soup.font.font['face']}>"

Это даст вам:

"<font color="blue"><font face="Times New Roman">"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...