如何从这个HTML字符串中拆分文本元素?python

2024-10-01 17:22:43 发布

您现在位置:Python中文网/ 问答频道 /正文

早上好

我正在用Python进行一些HTML解析,我遇到了以下几点;在单个表单元格中进行名称配对。我试图分别提取每一条信息,并尝试了几种不同的方法来分割以下字符串

HTML字符串:

<span><strong>13:30</strong><br/>SecondWord</span></a>

我希望我的结果是:

text1 = 13:30
text2 = "SecondWord"

我目前正在使用一个循环遍历表中的所有行,从中获取文本并将其拆分为一行。我注意到HTML中间有一个换行符,所以它在web上单独呈现,我试图用一个新行替换它并在上面运行拆分-但是我的string.replace()和re.sub()方法似乎不起作用。 我很想知道我做错了什么

最新方法:

resub_pat = r'<br/>'
rows=list()
for row in table.findAll("tr"):
    a = re.sub(resub_pat,"\n",row.text).split("\n")

这是一个有点散列在一起,但我希望我已经抓住了我的问题!我没有发现任何类似的问题


Tags: 方法字符串brre名称信息htmlrow
3条回答

你可以试试:

from bs4 import BeautifulSoup
import re

# the soup
soup = BeautifulSoup("<span><strong>13:30</strong><br/>SecondWord</span></a>", 'lxml')

# the regex object
rx = re.compile(r'(\d+:\d+)(.+)')

# time, text
text = soup.find('span').get_text()
x,y  = rx.findall(text)[0]
print(x)
print(y)

使用recursive=False仅获取直接文本,使用strong.text获取另一个文本

Ex:

from bs4 import BeautifulSoup

soup = BeautifulSoup("<span><strong>13:30</strong><br/>SecondWord</span></a>", 'lxml')

# text1
print(soup.find("span").strong.text)     #  > 13:30
# text2          
print(soup.find("span").find(text=True, recursive=False))  #  > SecondWord
from bs4 import BeautifulSoup


txt = '''<span><strong>13:30</strong><br/>SecondWord</span></a>'''
soup = BeautifulSoup(txt, 'html.parser')

text1, text2 = soup.span.get_text(strip=True, separator='|').split('|')

print(text1)
print(text2)

印刷品:

13:30
SecondWord

相关问题 更多 >

    热门问题