python脚本查找txt文本中指定文字及上下文

2023-01-18 19:06:21

心血来潮写了个小工具,可以查找并保存txt文本中指定文字所在行及上下文,超出的部分不会显示,上下文行数可以更改。如果没有查到会直接显示查找完成,生成的保存文档里也什么没有。
主要使用python的file方法实现。
代码如下:

#encoding utf-8

fo = open('E:\\txtseeker\\test.txt','r',encoding='UTF-8')       #打开目标文件
fw = open('E:\\txtseeker\\testw.txt','w',encoding='UTF-8')      #新建文件保存结果
line = fo.readlines()

cnt = 0
for i in line:
    if 'd' in i:
        if 2<cnt+1<=len(line):
            # 打印目标行及上下两行的文字
            print("原文件行号:",cnt+1)
            print(line[cnt-2])
            print(line[cnt-1])
            print(line[cnt])
            # 把查找结果写到新文件里
            fw.write("原文件行号:" + str(cnt + 1) + '\n')
            fw.write(line[cnt - 2])
            fw.write(line[cnt - 1])
            fw.write(line[cnt])
            if cnt+2 < len(line):
                print(line[cnt+1])
                print(line[cnt+2])
                fw.write(line[cnt + 1])
                fw.write(line[cnt + 2])
            elif cnt+2 == len(line):
                print(line[cnt+1])
                fw.write(line[cnt + 1])
        elif cnt == 0:
            print("原文件行号:", cnt + 1)
            fw.write("原文件行号:" + str(cnt + 1) + '\n')
            print(line[cnt])
            fw.write(line[cnt])
        elif cnt == 1:
            print("原文件行号:", cnt + 1)
            fw.write("原文件行号:" + str(cnt + 1) + '\n')
            print(line[cnt - 1])
            print(line[cnt])
            fw.write(line[cnt - 1])
            fw.write(line[cnt])
        elif cnt == 2:
            print("原文件行号:", cnt + 1)
            fw.write("原文件行号:" + str(cnt + 1) + '\n')
            print(line[cnt - 2])
            print(line[cnt - 1])
            print(line[cnt])
            fw.write(line[cnt - 2])
            fw.write(line[cnt - 1])
            fw.write(line[cnt])
    cnt = cnt + 1
else:
    print("查找完成")
fo.close()
fw.close()
  • 作者:易水斯年
  • 原文链接:https://blog.csdn.net/weixin_44762233/article/details/125051612
    更新时间:2023-01-18 19:06:21