动态条件格式文本-如果列表中有单词

时间:2019-05-12 17:25:49

标签: python html flask

我有一个flask应用程序,该应用程序返回带有动态生成的文本的模板。我想根据同样动态生成的列表变量在文本变量中加粗特定单词。

让我们说我的两个变量如下

text = "Stephen went to the park on Tuesday with Sarah.
        Stephen couldn't go to my birthday party."

list=['Stephen', 'Sarah', 'Tuesday']

所需的html输出: 斯蒂芬萨拉星期二一起去了公园。 斯蒂芬无法参加我的生日聚会。

我为如何解决此类问题而烦恼,不胜感激。

编辑: Python代码

return render_template('results.html', ctext=boldened_text)

HTML代码

<h6>Your Text was</h6>
<div class="alert alert-info" role="alert"><p>{{ctext}}</p></div>

2 个答案:

答案 0 :(得分:1)

# Loop over all words
for word in list:
  # replace the word by bold tags with the word in between
  text = text.replace(word, '<b>%s</b>' % word)

答案 1 :(得分:1)

为了更好地控制,我建议使用for循环(在此示例中简化为列表理解):

text = "Stephen went to the park on Tuesday with Sarah. Stephen couldn't go to my birthday party."

filter_list = ['Stephen', 'Sarah', 'Tuesday']

boldened = " ".join(["<b>{}</b>".format(word) if word.strip() in filter_list else word for word in text.split(" ")])

要查看此输出使用什么:

print(boldened)

预期输出:

"<b>Stephen</b> went to the park on <b>Tuesday</b> with Sarah. <b>Stephen</b> couldn't go to my birthday party."

注意::请记住,在Python list是一种类型,请勿将其用作变量的标识符。

此外,由于没有将<b>变量呈现为HTML,因此您将ctext标签打印为纯文本,请改写为:

{{ ctext | safe }}

警告:仅将safe用于您绝对确定为 实际上安全 的字符串!

祝你好运。