from bs4 import BeautifulSoup
# current output as below
"""
'DOMINGUEZ, JONATHAN D. VS. RAMOS,\n
SILVIA M'
"""
# desired one is
# DOMINGUEZ, JONATHAN D. VS. RAMOS, SILVIA M
x = """<td width = "350px" valign = "top"
style = "padding:.5rem;">
DOMINGUEZ, JONATHAN D. VS. RAMOS,
SILVIA M
</td>"""
soup = BeautifulSoup(x, 'lxml')
print(soup.select_one('td').get_text(strip=True, separator='\n'))
Я проверил документы и считаю, что get_text()
может это сделать, но не знаю как!
изменить separator='\n'
на separator=' '
Вы пробовали это?
Вам может понадобиться регулярное выражение, это также может избавиться от лишних пробелов:
from bs4 import BeautifulSoup
import re
x = """<td width = "350px" valign = "top"
style = "padding:.5rem;">
DOMINGUEZ, JONATHAN D. VS. RAMOS,
SILVIA M
</td>"""
soup = BeautifulSoup(x, 'lxml')
text = re.sub(r'\s+', ' ', soup.select_one('td').get_text(strip=True))
print(text)
Предоставление:
DOMINGUEZ, JONATHAN D. VS. RAMOS, SILVIA M
Просто чтобы дать некоторый контекст - в этом случае get_text(strip=True)
само по себе не будет работать, потому что текст в вашем <td>
не "разделен" тегами и, точнее, не <br>
, поэтому он будет распознан как одна "многострочная" строка, содержащая символы новой строки.
В результате этого обстоятельства параметр strip=True
удаляет символы только слева и справа от всей строки.
Основываясь на следующем HTML, он будет работать с пробелом в качестве разделителя:
x = """<td width = "350px" valign = "top"
style = "padding:.5rem;">
DOMINGUEZ, JONATHAN D. VS. RAMOS,<br>
SILVIA M
</td>"""
soup = BeautifulSoup(x)
soup.td.get_text(' ',strip=True)
Но без какого-либо тега, включенного в строку в качестве возможного разделителя, я бы рекомендовал использовать ответ @Мартин Эванс с использованием regex
, который также очень хорошо обрабатывает несколько пробелов.
re.sub(r'\s+', ' ', soup.select_one('td').get_text(strip=True))
Я не знаю, что у
.get_text()
есть такая способность. Однако вы можете обработать строку с помощьюre
:re.sub(r"\s{2,}", " ", soup.select_one("td").get_text(strip=True))
.