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