【问题标题】:How to replace multiple instances of a sub string in a long string (html template) with a list of strings in order?如何按顺序用字符串列表替换长字符串(html模板)中子字符串的多个实例?
【发布时间】:2017-10-20 09:55:33
【问题描述】:

我正在尝试使用 python 编写一个文本文件 web 文档(一年级学生学习 python 的基本概念)

假设我有一个这样的 HTML 模板:

<!DOCTYPEhtml>
<html>
<head>
    <title>News Archive</title>
</head>

<body> 
  <br>
  <ol>

  <!--  Article 1 -->

  <h1>***TITLE***</h1>


  <img src=***IMGURL***  
  <p>***DESCRIPTION***</p>
  <p><strong> Full story: </strong> ***LINK*** </p>
  <p><strong> Dateline: </strong> ***PUBDATE*** </p>
  <br/>
  <!--  Article 2 -->  
  <h1>***TITLE***</h1>
  <img src=***IMGURL***   

  <p>***DESCRIPTION***</p>

  <p><strong> Full story: </strong> ***LINK*** </p>
  <p><strong> Dateline: </strong> ***PUBDATE*** </p>

</body>
</html>

假设我想用列表中的字符串按顺序替换 \*\**TITLE*** 的所有实例。这是包含字符串的列表:

titles = ['HI', 'HELLO']

如何用'HI' 替换***TITLE*** 的第一个实例,用'HELLO' 替换\*\**TITLE*** 的第二个实例?

我已经尝试过这个基本的for循环,但我认为我做得不对(因为我只是学习python的基础知识,我认为老师想要一个for循环)

for tags in range(2):
    html_code = html_template.replace('***TITLE***', titles)

提前致谢。 (PS:抱歉格式很糟糕,新的堆栈溢出)

编辑:抱歉忘记提及关键细节...
如果我想创建一个 for 循环,例如 ***TITLE*** 用其各自的 2 个字符串列表替换,***IMGURL*** 用其各自的 2 个字符串列表替换,***DESCRIPTION*** 用它的相应的 2 个字符串列表,其余占位符依此类推?

【问题讨论】:

    标签: python html string for-loop


    【解决方案1】:

    您可以指定要替换的出现次数:

    for t in titles:
        html_template = html_template.replace('***TITLE***', t, 1)
    

    【讨论】:

    • @navre3 这会将'***TITLE***' 的第一次出现替换为t 中的第一项,依此类推。
    • 如果我想创建一个 for 循环,例如将 **TITLE** 替换为其各自的 2 个字符串列表 **IMGURL** i> 及其各自的 2 个字符串列表,**DESCRIPTION** 及其各自的 2 个字符串列表,等等其余占位符?
    猜你喜欢
    • 2016-03-24
    • 2011-09-01
    • 2018-04-01
    • 2017-06-22
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多