Извлечение части строки, которая пришла из BeautifulSoup - PullRequest
0 голосов
/ 13 января 2019

У меня есть эта строка, пришедшая от BeautifulSoup:

<span class="move-text-component vertical-move-list-clickable"><!-- -->

 abc6

 <!-- --> <!-- --></span>

Как я могу извлечь текст abc6, зная, что это может быть любая подстрока с 2-6 символами / числами / дефисами (символы как с заглавными буквами, так и без), и я думаю, что у него есть символ новой строки после и после всегда, как здесь.
Как я могу сделать это, используя любой метод, который вы считаете подходящим? (регулярное выражение, BeautifulSoup и т. д.)

edit: это точная строка, напечатанная в виде списка для отображения \ n символов:

['<span class="move-text-component vertical-move-list-clickable"><!-- -->\n\n  d4\n\n  <!-- --> <!-- --></span>']

Ответы [ 2 ]

0 голосов
/ 13 января 2019

Вам не нужны другие инструменты, кроме BeautifulSoup. Просто используйте .text.strip ():)

from bs4 import BeautifulSoup

source = """
<span class="move-text-component vertical-move-list-clickable"><!-- -->\n\n  d4\n\n  <!-- --> <!-- --></span>
"""
soup = BeautifulSoup(source, 'lxml')

data = soup.find('span', class_ ="move-text-component vertical-move-list-clickable")

print(data.text.strip())

Результаты

enter image description here

0 голосов
/ 13 января 2019

Вы можете сделать это с помощью регулярного выражения:

<.+>\n\n(.+)\n\n<.+>

И извлечь группу в ()

В Python вы должны будете написать это так:

import re
re.search(".+\n\n(.+)\n\n.+", text).group(1)

. соответствует любому символу
+ соответствует от одного до неограниченного времени
() для выбора группы
.group(1) в конце состоит в том, чтобы взять первый матч в ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...