#python #html
#python #HTML
Вопрос:
Итак, у меня есть эта таблица, и я хочу просмотреть ее на 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 id="NUMBER">
, основываясь на позиции tr по сравнению со следующим номером в списке.
Комментарии:
1. Ваш вопрос плохо читается — если вы хотите получить достойный ответ, рассмотрите возможность перезаписи
2. Мне не удалось проанализировать ваш вопрос
3. Извините, не поместил теги кода вокруг моего HTML.
Ответ №1:
Использование 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. Как это будет выводиться в виде переменной?
2. Я не понимаю вопроса. Можете ли вы уточнить?
Ответ №2:
вариант 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)