![](/img/trans.png)
[英]Python: finding and replacing a symbol in a file on if followed by specific word
[英]Finding a date and replacing a word - Python
我有如下代碼,我在其中過濾掉早於 2 天的日期,並將其設為粗體並更改其顏色。
在此,我還想將發現日期早於 2 天的警告替換為失敗。
任何人都可以通過下面的代碼幫助我們如何實現它。
import re
from datetime import datetime
ht ="""<tr>
<td>32356</td>
<td>cfra03</td>
<td>04-07-2020</td>
<td>Ssv</td>
<td>Warning</td>
</tr>
<tr>
<td>32367</td>
<td>c017</td>
<td>04-08-2020</td>
<td>SDR</td>
<td>Completed</td>
</tr>
<tr>
<td>29451</td>
<td>c10</td>
<td>04-05-2020</td>
<td>SR</td>
<td>Warning</td>
</tr>
"""
date_var = re.findall(r"[\d]{2}-[\d]{2}-[\d]{4}", ht)
for s in date_var:
element_date = datetime.strptime(s, "%m-%d-%Y")
if (datetime.now() - element_date).days > 2:
ht = ht.replace(s, '<b><font color="#ff0000">'+s+'</font></b>')
print (ht)
當前 output 是-
<tr>
<td>32356</td>
<td>cfra03</td>
<td>04-07-2020</td>
<td>Ssv</td>
<td>Warning</td>
</tr>
<tr>
<td>32367</td>
<td>c017</td>
<td>04-08-2020</td>
<td>SDR</td>
<td>Completed</td>
</tr>
<tr>
<td>29451</td>
<td>c10</td>
<td><b><font color="#ff0000">04-05-2020</font></b></td>
<td>SR</td>
<td>Warning</td>
</tr>
Output 應該是-
<tr>
<td>32356</td>
<td>cfra03</td>
<td>04-07-2020</td>
<td>Ssv</td>
<td>Warning</td>
</tr>
<tr>
<td>32367</td>
<td>c017</td>
<td>04-08-2020</td>
<td>SDR</td>
<td>Completed</td>
</tr>
<tr>
<td>29451</td>
<td>c10</td>
<td><b><font color="#ff0000">04-05-2020</font></b></td>
<td>SR</td>
<td><b><font color="#ff0000">Failed</font></b></td>
</tr>
'''
這段代碼:
import re
from datetime import datetime
ht ="""<tr>
<td>32356</td>
<td>cfra03</td>
<td>04-07-2020</td>
<td>Ssv</td>
<td>Warning</td>
</tr>
<tr>
<td>32367</td>
<td>c017</td>
<td>04-08-2020</td>
<td>SDR</td>
<td>Completed</td>
</tr>
<tr>
<td>29451</td>
<td>c10</td>
<td>04-05-2020</td>
<td>SR</td>
<td>Warning</td>
</tr>
"""
result = []
rows = ht.split('<tr>')
for row in rows :
date_var = re.findall(r"[\d]{2}-[\d]{2}-[\d]{4}", row, re.DOTALL)
for s in date_var:
element_date = datetime.strptime(s, "%m-%d-%Y")
if (datetime.now() - element_date).days > 2:
row = row.replace(s, '<b><font color="#ff0000">'+s+'</font></b>')
row = row.replace( 'Warning', 'Failed') # or whatever
result.append(row)
print ('<tr>'.join(result))
給出這個結果:
<tr>
<td>32356</td>
<td>cfra03</td>
<td>04-07-2020</td>
<td>Ssv</td>
<td>Warning</td>
</tr>
<tr>
<td>32367</td>
<td>c017</td>
<td>04-08-2020</td>
<td>SDR</td>
<td>Completed</td>
</tr>
<tr>
<td>29451</td>
<td>c10</td>
<td><b><font color="#ff0000">04-05-2020</font></b></td>
<td>SR</td>
<td>Failed</td>
</tr>
您可以根據需要在Failed
周圍添加 HTML。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.