Python:每次出现 "clear"时,我希望文本与列表关联

标签 python html python-2.7

我试图将我的测试框架与日志文件关联起来,以确定哪些实例通过,哪些实例失败。 为了更好地解释,这里有一个例子: 我有一个 list :

data = ['F','P'] # first test pass, second test fail 

这是我的日志文件:

USER INPUT :  “clear”                   ------
SYSTEM RESPONSE: “Hello! How are you?”        | Fail
USER INPUT : “Good thank you”                 |
SYSTEM RESPONSE: "Okay"                 ------ 
USER INPUT : “clear”                    ------
SYSTEM RESPONSE: “Hello! How are you?”        |
USER INPUT : “I am good, Thank you!”          | Pass
SYSTEM RESPONSE: "Great!"                     | 
USER INPUT : “Good”                     ------

所以“clear”的每个实例都会显示一个新日志,因此我希望第一个“clear”直到下一个clear发生与P相关联,我正在使用html来构建代码,每当P发生时它就会颜色为绿色 每次出现 F 时,代码都会变成红色

到目前为止我所拥有的是:

            for line in lines :
                for i in cc:
                    if (data[i]== 'P'):
                        n = """<p style="color:green;>""" + line + '</p>'
                    else:
                        n = """<p style="color:red;>""" + line + '</p>'

我真的不确定这个结构。 如何找到每次“清除”发生的时间并为其分配特定颜色,直到下一个实例发生。 请随时向我询问有关此问题的任何问题或进一步澄清! 万分感谢!

最佳答案

您可以使用re根据USER INPUT : "clear"来分割日志文件:

log_file = """USER INPUT :  “clear”
SYSTEM RESPONSE: “Hello! How are you?”
USER INPUT : “Good thank you”
SYSTEM RESPONSE: "Okay"
USER INPUT : “clear”
SYSTEM RESPONSE: “Hello! How are you?”
USER INPUT : “I am good, Thank you!”
SYSTEM RESPONSE: "Great!"
USER INPUT : “Good”"""

import re
from pprint import pprint

groups = re.findall(r'USER INPUT.*?clear.*?(?:(?=USER INPUT :\s+\Wclear\W)|(?=\Z))', log_file, flags=re.DOTALL)
data = ['F','P']

style = {'P': '<p style="color:green;>', 'F': '<p style="color:red;>'}

html = ''
for d, g in zip(data, groups):
    for line in g.splitlines():
        html += style[d] + line + '</p>\n'

pprint(html)

打印:

('<p style="color:red;>USER INPUT :  “clear”</p>\n'
 '<p style="color:red;>SYSTEM RESPONSE: “Hello! How are you?”</p>\n'
 '<p style="color:red;>USER INPUT : “Good thank you”</p>\n'
 '<p style="color:red;>SYSTEM RESPONSE: "Okay"</p>\n'
 '<p style="color:green;>USER INPUT : “clear”</p>\n'
 '<p style="color:green;>SYSTEM RESPONSE: “Hello! How are you?”</p>\n'
 '<p style="color:green;>USER INPUT : “I am good, Thank you!”</p>\n'
 '<p style="color:green;>SYSTEM RESPONSE: "Great!"</p>\n'
 '<p style="color:green;>USER INPUT : “Good”</p>\n')

编辑:

我做了一个在线示例 regex works here .

关于Python:每次出现 "clear"时,我希望文本与列表关联,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600182/

相关文章:

python - 如何在python中将列表从元素n切片到末尾?

javascript - 移动时的菜单不会滚动

python-2.7 - python 按行循环遍历 subprocess.check_output

javascript - 编辑 tumblr 主题 html 以删除一些元素

javascript - 打印网页时在每个打印页面的底部添加文本页脚

python - 在运行 Python 2.7 的 Google App Engine 中获取 Thread.Lock 需要 50% 的响应时间

python - 有没有办法在实例化之前引用类对象?

python - 如何使用 python opencv2 在 Windows 中的图像上写入文本

python - 如何将图像添加到 Pythonista 的 ui 设计器

python - python 2.x中不可避免的 'encoding is an invalid keyword'错误吗?