как я копирую этот html в себя?

#python #html

#python #HTML

Вопрос:

У меня есть очень простой html. с несколькими разделениями для заполнения данными. ниже мой index.html

 <!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>GOG  init</title>
</head>
<body>
   <h1> GOG  new :) </h1>
   <div id = "card1"><div id ="name1"></div><div id ="price1"></div></div>
   <div id = "card2"><div id ="name2"></div><div id ="price2"></div></div>
   <div id = "card3"><div id ="name3"></div><div id ="price3"></div></div>
</body>
</html>
 

я написал скрипт на python, который извлекает некоторые данные из gog.com чтобы заполнить html, и я заполняю html ниже, просто заменив 2 строки.

 #bunch of stuff to get names n prices ...... 

of= open("index.html","r")
html_page=of.read()
of.close()

with open("index.html","w") as f:
    to_replace='<div id = "card1"><div id ="name1">{}</div><div id ="price1">{}</div></div>'.format(name1 , price1)
    f.write(re.sub(r'<div id = "card1"><div id ="name1"></div><div id ="price1"></div></div>', to_replace, html_page))
    to_replace='<div id = "card2"><div id ="name2">{}</div><div id ="price2">{}</div></div>'.format(name2 , price2)
    f.write(re.sub(r'<div id = "card2"><div id ="name2"></div><div id ="price2"></div></div>', to_replace, html_page))
 

Ниже вы можете увидеть конечный результат моего html. кажется, он копирует сам себя, включая части head .

 <body>
<h1> GOG  new :) </h1>
   <div id="card1"><div id="name1">Pillars of Eternity II: Deadfire - Obsidian Edition ,,,  Outward</div><div id="price1">18.00</div></div>
   <div id="card2"><div id="name2"></div><div id="price2"></div></div>
   <div id="card3"><div id="name3"></div><div id="price3"></div></div>

    <meta charset="UTF-8">
    <title>GOG  init</title>

   <h1> GOG  new :) </h1>
   <div id="card1"><div id="name1"></div><div id="price1"></div></div>
   <div id="card2"><div id="name2">Outward</div><div id="price2">13.99</div></div>
   <div id="card3"><div id="name3"></div><div id="price3"></div></div>

</body>
 

Как он копирует все это? что я делаю не так?

введите описание изображения здесь

Ответ №1:

Это потому, что вы пишете два раза html_page в файле. Вы меняете строку на странице html и печатаете всю html_page, затем добавляете другую строку из исходного файла и затем записываете ее снова. Я изменил первую подстановку, которая будет сохранена в переменной html_page. Эта строка снова перейдет в re.sub(), а затем будет записана в файл.

 #bunch of stuff to get names n prices ...... 

of= open("index.html","r")
html_page=of.read()
of.close()

with open("index.html","w") as f:
    to_replace='<div id = "card1"><div id ="name1">{}</div><div id ="price1">{}</div></div>'.format(name1 , price1)
    html_page = re.sub(r'<div id = "card1"><div id ="name1"></div><div id ="price1"></div></div>', to_replace, html_page))
    to_replace='<div id = "card2"><div id ="name2">{}</div><div id ="price2">{}</div></div>'.format(name2 , price2)
    f.write(re.sub(r'<div id = "card2"><div id ="name2"></div><div id ="price2"></div></div>', to_replace, html_page))