首页 > 解决方案 > For 循环仅更改最后一个值 - Python

问题描述

我正在运行一个 for 循环,但它只是修改最后一个条目的值,而不是所有值。

import re
ht = """
    <tr>
        <td>03-31-2020_00.20.02.1135</td>
    </tr>
        <tr>
        <td>03-31-2020_00.20.02.105</td>
    </tr>
    <tr>
        <td>03-28-2020_05.10.01.7068</td>
    </tr>"""

for i in ht.split():
        if i.startswith("<td>03-31-2020"):
            htm = (ht.replace(i,'<b><font color="#ff0000">'+i+'</font></b>'))
print (htm)

--得到如下输出(只是修改了最后一个条目而不是所有匹配的条目)-

</tr>
<tr>
    <td>03-31-2020_00.20.02.1135</td>
</tr>
    <tr>
    <b><font color="#ff0000"><td>03-31-2020_00.20.02.105</td></font></b>
</tr>
<tr>
    <td>03-28-2020_05.10.01.7068</td>
</tr>

标签: pythonpython-3.x

解决方案


您可以使用库中的re.sub方法re用替换替换匹配模式。

尝试这个:

html = re.sub(r"(<td>03-31-2020.*?</td>)", r'<b><font color="#ff0000">\1</font></b>', ht)
print(html)

输出:

  <tr>
        <b><font color="#ff0000"><td>03-31-2020_00.20.02.1135</td></font></b>
    </tr>
        <tr>
        <b><font color="#ff0000"><td>03-31-2020_00.20.02.105</td></font></b>
    </tr>
    <tr>
        <td>03-28-2020_05.10.01.7068</td>
    </tr>

推荐阅读