所以我有这个表,我希望在Python中查找,找到所有<tr>
标签,并将它们转换为<tr id="NUMBER HERE">
,其中数字将是列表中的数字是这种格式:
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '47']
这样做的最佳方式是什么?
基本上,第一个<tr>
将成为<tr id="1">
第二个<tr id="2">
等等。
它并不总是连续的,你可以从20到47看到它。
该表存储为字符串。
我应该指定,目前,它是一个包含多个标签的字符串,即<html><table><tr>blah</tr><tr>blahblah</tr></table></html>
- 非常简单。我希望它在字符串中搜索<tr>
的实例,并根据tr的位置与列表中的下一个数字替换每个<tr id="NUMBER">
。
答案 0 :(得分:7)
使用lxml:
import lxml.html as LH
html_table='''
<table>
<tr>
<tr>
<tr>
<tr>
<tr>
</table>
'''
nums=['1','2','20','47','50']
doc=LH.fromstring(html_table)
for tr,n in zip(doc.xpath('//tr'),nums):
tr.attrib['id']=n
print(LH.tostring(doc,pretty_print=True))
产量
<table>
<tr id="1"></tr>
<tr id="2"></tr>
<tr id="20"></tr>
<tr id="47"></tr>
<tr id="50"></tr>
</table>
答案 1 :(得分:0)
lxml选项很好。如果有一个外部包(sphc这里),这是一个有趣的选项。
import sphc
nums = ['1','2','20','47','50']
tf = sphc.TagFactory()
table = tf.TABLE()
table.rows = [tf.TR(id=num) for num in nums]
print (table)