Python 在文件中查找字符串,附加到包含字符串的行的开头和结尾

Python 在文件中查找字符串,附加到包含字符串的行的开头和结尾,python,Python,我让我的脚本查看一个文本文件,其中包含许多行上的大量文本。我试图得到它,所以无论何时发现“ERROR”这个词,它都会附加到包含“ERROR”的行的开头和结尾 到目前为止,我有一个变量,它返回包含“ERROR”的所有行的列表 因此,如果我打印目标,它将返回包含“ERROR”的所有行的列表 目标[0]返回第一行等 我还能够应用格式: for i in targets: format = '<span style="background-color: #ff0000; colo

我让我的脚本查看一个文本文件,其中包含许多行上的大量文本。我试图得到它,所以无论何时发现“ERROR”这个词,它都会附加到包含“ERROR”的行的开头和结尾

到目前为止,我有一个变量,它返回包含“ERROR”的所有行的列表

因此,如果我打印目标,它将返回包含“ERROR”的所有行的列表

目标[0]返回第一行等

我还能够应用格式:

for i in targets:
    format = '<span style="background-color: #ff0000; color: #ffffff;">' + i + '</span>'
    formatted_line = i.replace(i, format)
对于目标中的i:
格式=“”+i+“”
格式化的行=i.replace(i,格式化)
但是我似乎不知道如何让脚本编写一个包含所有文本的新文件,包括添加到开始和结束的格式

只是需要一个指向正确方向的点!谢谢

编辑:对所需输出进行一些澄清:

原始文件: 这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

此处的文本错误行

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

此处的文本错误行

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

新文件: 这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

此处文本的错误行

这里记录一行文字

with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

此处文本的错误行

在此处记录文本行

,其中open(infle,'r')为IN,open('output.txt,'w')为OUT:
with open(infile, 'r') as IN, open('output.txt', 'w') as OUT:
    for line in IN:
        if "ERROR" in line:
            f = '<span style="background-color: #ff0000; color: #ffffff;">' + line + '</span>'
            OUT.write(f + '\n')
        else:
            OUT.write(line + '\n')

对于线路输入: 如果行中出现“错误”: f=“”+行+“” OUT.write(f+'\n') 其他: OUT.write(第+'\n'行)
只需在if语句的行中添加一个.split()函数,即可将其转换为数组而不是字符串

with open(infile, 'r') as f:
    targets = [line for line in f if "ERROR" in line.split()]

print(targets)

我认为把读和写的逻辑分开比较容易理解。而且…可读性在编码中非常重要

我将您的文本保存在名为
text.txt
的文本文件中,并将输出保存在
new_text.txt
中。我不知道你想要什么格式的结果(主要是间距),所以你可以试试看什么适合你的需要

从pathlib导入路径
#获取存储的文本
text_fp=Path.home().joinpath('Desktop','text.txt'))
行=[]
将open(text_fp,'r')作为fp:
对于fp中的行:
如果行中出现“错误”:
行=“{}”。格式(行)
行。追加(行)
#新文件名
new_text_fp=Path.home().joinpath('Desktop','new_text.txt'))
以open(新文本)为fp,“w”)作为fp:
对于行中的行:
fp.write('{}\n'.格式(行))
输入数据:

log line of text here
log line of text here
error line of text here
log line of text here
error line of text here
log line of text here
结果:

log line of text here

log line of text here

<span style="background-color: #ff0000; color: #ffffff;">error line of text here
</span>
log line of text here

<span style="background-color: #ff0000; color: #ffffff;">error line of text here
</span>
log line of text here
在此记录文本行
这里记录一行文字
此处的文本错误行
这里记录一行文字
此处的文本错误行
这里记录一行文字

那么您想将
目标写入新文件?我有点搞不清楚你想要的输出是什么?将预期结果发布到脚本创建的新文件中,该文件将具有与输入相同的文本,但应用了更改。我假设你将“ad”放在了哪里,它的意思是“as”,对吗?对于第二个方法,我得到了
TypeError:不支持的+操作数类型:'builtin\u function\u or\u method'和'str'
我得到了第一个方法,但这会写入一个包含已编辑行的文件。我仍然试图包括所有其他未被编辑的行script@samrb现在试试。如果希望包含所有行,还需要将这些行存储到另一个列表中。如果有机会,请查看与此脚本相关的后续问题