Перебор списка чисел и добавление их в теги

#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)