通过对属于同一类别的元素进行分组的Python正则表达式

通过对属于同一类别的元素进行分组的Python正则表达式,python,regex,Python,Regex,我有这样一个文件: <table> <span clas="city"> Miami </span> <span><a href="miami" > Miami </a> </span> <span clas="city"> Orlando </span> <span><a href="orlando" > orlando </a></span&g

我有这样一个文件:

<table>
<span clas="city"> Miami </span> <span><a href="miami" > Miami </a> </span>
<span clas="city"> Orlando </span> <span><a href="orlando" > orlando </a></span>
</table>
<table>
<span clas="city"> Los Angeles </span> <span><a href="Los Angeles" > </a> </span>
<span clas="city"> San Diego </span>  <span><a href="Los Angeles" > San Diego</a> </span>
</table>

使用适当的HTML解析器:

from bs4 import BeautifulSoup
soup = BeautifulSoup(open(...).read())
states = {}
for i, table in enumerate(soup("table")):
    for city in table("span"):
        states.setdefault(i, []).append(city.text.strip())
这将给

states
{0: [u'Miami', u'Orlando'], 1: [u'Los Angeles', u'San Diego']}

强制性链接:为什么要使用正则表达式来完成这项工作?“有些人在遇到问题时,会想“我知道,我会使用正则表达式。”现在他们有两个问题了。”-杰米·扎温斯基(Jamie Zawinski)只是将lxml与html结合使用,网络上有很多关于这类内容的图图,你不会发疯的。^^^@Inbar好吧,这花了我一段时间,我自己也明白了。我可以得到城市,但我想知道是否有一种简洁的分类方法。如果你真的想使用正则表达式,那么使用两个正则表达式:一个用于查找表,另一个用于搜索标记中每个文本中的城市。谢谢。我本来打算接受这个答案的,但我看到有些表我得到了重复,因为有些行有多个s。我更新了表结构。使用
table(“span”,“city”)
仅搜索具有class
city
span
标记。你应该阅读BeautifulSoup的文档。
states
{0: [u'Miami', u'Orlando'], 1: [u'Los Angeles', u'San Diego']}