【问题标题】:Python, replacing lines in html file to otherPython,将html文件中的行替换为其他
【发布时间】:2021-03-24 06:44:09
【问题描述】:

我有带有画廊的 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?

【问题讨论】:

    标签: python html automation


    【解决方案1】:

    你可以做这样的事情(我假设你想要的是附加多个具有不同链接的 HTML 元素)。

    使用格式,例如使用格式代码 0 并将其中的每个 it 替换为从 0 到 101(包括 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 Code(或至少在终端默认情况下)只会输出字符串直到 25。使用其他一些 IDE 或其他东西来获取完整输出。

    【讨论】:

    • 谢谢,这就是我要找的!
    【解决方案2】:

    您可以使用 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'))
    

    如需更多字符串格式化信息,请查看link 格式化 f 字符串。

    【讨论】:

      猜你喜欢
      • 2014-11-18
      • 2014-08-27
      • 2012-10-16
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 2012-04-23
      • 1970-01-01
      相关资源
      最近更新 更多