提取子字符串的Python列表处理
我通过beautifulsoup解析了一个HTML页面,将所有具有特定提取子字符串的Python列表处理,python,beautifulsoup,Python,Beautifulsoup,我通过beautifulsoup解析了一个HTML页面,将所有具有特定类名称的div元素提取到一个列表中 我现在必须从这个列表中清除HTML字符串,留下我需要的字符串标记 我开始的列表如下所示: [<div class="info-1">\nName1a <span class="bold">Score1a</span>\n</div>, <div class="info-2">\nName1b <span class
类名称的div
元素提取到一个列表中
我现在必须从这个列表中清除HTML字符串,留下我需要的字符串标记
我开始的列表如下所示:
[<div class="info-1">\nName1a <span class="bold">Score1a</span>\n</div>, <div class="info-2">\nName1b <span class="bold">Score1b</span>\n</div>, <div class="info-1">\nName2a <span class="bold">Score2a</span>\n</div>, <div class="info-2">\nName2b <span class="bold">Score2b</span>\n</div>, <div class="info-1">\nName3a <span class="bold">Score3a</span>\n</div>, <div class="info-2">\nName3b <span class="bold">Score3b</span>\n</div>]
像这样解析子字符串的有效方法是什么
我尝试过使用split
方法(例如[item.split('\n',1)for string\u list中的item]
),但拆分只会导致需要进一步拆分的子字符串(因此效率低下)。同样适用于使用替换
我觉得我应该走另一条路,提取我需要的代币,但我似乎不能用优雅的方式来做这件事。对这件事不熟悉也没什么帮助。我感谢你的帮助
除非确实需要,否则不要将BS对象转换为字符串
使用CSS选择器查找以info
使用stripped_strings
获取标记下的所有非空字符串
使用tuple()
将iterable转换为tuple对象
这太棒了。非常感谢:-)
[('Name1a', 'Score1a'), ('Name1b', 'Score1b'), ('Name2a', 'Score2a'), ('Name2b', 'Score2b'), ('Name3a', 'Score3a'), ('Name3b', 'Score3b')]
import bs4
html = '''<div class="info-1">\nName1a <span class="bold">Score1a</span>\n</div>, <div class="info-2">\nName1b <span class="bold">Score1b</span>\n</div>, <div class="info-1">\nName2a <span class="bold">Score2a</span>\n</div>, <div class="info-2">\nName2b <span class="bold">Score2b</span>\n</div>, <div class="info-1">\nName3a <span class="bold">Score3a</span>\n</div>, <div class="info-2">\nName3b <span class="bold">Score3b</span>\n</div>'''
soup = bs4.BeautifulSoup(html, 'lxml')
for div in soup.select('div[class^="info"]'):
t = tuple(text for text in div.stripped_strings)
print(t)
('Name1a', 'Score1a')
('Name1b', 'Score1b')
('Name2a', 'Score2a')
('Name2b', 'Score2b')
('Name3a', 'Score3a')
('Name3b', 'Score3b')