在Python中对包含锚标签和单元格数据的HTML表格排序
我需要在Python中对一个特定结构的HTML表格进行排序。
<table>
<tr>
<td><a href="#">ABCD</a></td>
<td>A23BND</td>
<td><a title="ABCD">345345</td>
</tr>
<tr>
<td><a href="#">EFG</a></td>
<td>Add4D</td>
<td><a title="EFG">3432</td>
</tr>
<tr>
<td><a href="#">HG</a></td>
<td>GJJ778</td>
<td><a title="HG">2341333</td>
</tr>
</table>
我正在做这样的事情:
container = tree.findall("tr")
strOut = ""
data = []
for elem in container:
key = elem.findtext(colName)
data.append((key, elem))
data.sort()
但问题是,它是根据
我该怎么做才能实现这个呢?非常感谢。
3 个回答
0
我知道这不是你问的问题,但对于这种情况,最好的做法是使用JavaScript。这样你的网站用户体验会更好(如果你是在做网站的话)。
这个JavaScript库非常棒,而且使用起来很简单:
0
sort
方法有两个很有用的参数,分别是 key
和 cmp
,可以用来进行自定义排序。如果你在 data
数据结构中添加了排序所需的额外信息,就可以在调用 sort
时使用 key
或 cmp
(具体用哪个取决于你的需求)来实现你想要的排序效果。下面是一个简单的例子:
In [60]: ids = [1, 2, 3]
In [61]: score = {1: 20, 2: 70, 3: 40}
In [62]: ids.sort(key=lambda x: score[x])
In [63]: ids
Out[63]: [1, 3, 2]
在这个例子中,我根据每个 id
在 score
字典中的分数来对 ids
列表进行排序。
1
它是根据文本进行排序的,因为你在提取时用的就是这个文本作为关键字。
key = elem.findtext(colName)
我想colName
是某个标签的字符串,而findtext
会找到第一个匹配这个标签的子元素的文本。如果你想用某个属性的值(比如title
)作为关键字,
for ana in elem.findall('a'):
key = ana.get('title')
if key is not None: break
可以这样做。你究竟想用什么作为关键字呢?