У меня есть строка html с галереей:
<div class = "col-lg-4 col-md-6 portfolio-item ">
<div class = "portfolio-wrap">
<img src = "img/portfolio/1.jpg" class = "img-fluid" alt = "">
<div class = "portfolio-info">
<h4><a href = "#">TITLE</a></h4>
<p>DESCRIPTION</p>
<div>
<a href = "img/portfolio/1.jpg" data-lightbox = "portfolio" data-title = "DESCRIPTION" class = "link-preview" title = "Preview"><i class = "ion ion-eye"></i></a>
</div>
</div>
</div>
</div>
Мне нужно добавить еще 100 фотографий в галерею с именами от 1.jpg до 101.jpg, и я не хочу копировать их одну за другой, а скорее использую python, чтобы сделать это за меня. У меня есть что-то вроде этого:
fin = open("gallery.html", "rt")
fout = open("gallery2.html", "wt")
for line in fin:
fout.write(line.replace('1.jpg', '2.jpg'))
fin.close()
fout.close()
Но мне нужно знать, как сказать Python скопировать наши строки 101 раз и последовательно переписать все числа - от 1 до 101?
Вы можете сделать что-то вроде этого (я предполагаю, что вы хотите добавить несколько элементов HTML с разными ссылками).
Используйте форматирование, например, используйте код формата 0 и замените каждый его в них на каждое значение в каждой итерации от 0 до 101 включительно.
template = """
<div class = "col-lg-4 col-md-6 portfolio-item ">
<div class = "portfolio-wrap">
<img src = "img/portfolio/{0}.jpg" class = "img-fluid" alt = "">
<div class = "portfolio-info">
<h4><a href = "#">TITLE</a></h4>
<p>DESCRIPTION</p>
<div>
<a href = "img/portfolio/{0}.jpg" data-lightbox = "portfolio" data-title = "DESCRIPTION" class = "link-preview" title = "Preview"><i class = "ion ion-eye"></i></a>
</div>
</div>
</div>
</div>
"""
html = ""
maximum = 101
# stop at 102
for i in range(maximum+1):
html += template.format(i)
print(html)
# now write this output to your file if you want
with open("gallery2.html", "w") as f:
f.write(html)
Примечание: поскольку вы печатаете слишком много, код Visual Studio (или, по крайней мере, по умолчанию в терминале) будет выводить строку только до 25. Используйте какую-либо другую среду IDE или что-то еще, чтобы получить полный вывод.
Вы можете использовать цикл for и создавать новую строку в каждом цикле со следующим целым числом:
for i in range(101):
n = i+1
for line in fin:
fout.write(line.replace('1.jpg',f'{n}.jpg'))
Синтаксис f'{n}.jpg'
— очень удобный способ включения переменных в строку. Я не уверен, как разобрать его в ваш новый html-файл, чтобы сохранить его правильно.
Можно даже поместить выражения в скобки отформатированной строки, что приведет к еще более чистому коду:
for i in range(101):
for line in fin:
fout.write(line.replace('1.jpg',f'{i+1}.jpg'))
Для получения дополнительной информации о форматировании строк проверьте эту ссылку о форматировании f-строк.
спасибо, это то, что я искал!