Python从txt内查找关键字

用python从很大的文本中查找关键字,并且将相近关键字‘[1]’和 ‘sd 1’合成在一个文本内输出(需要输出多个),然后对输出文本进行再处理

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

import re
path = r"E:/xxx/"
dic = {}
lis = []
with open(rf'{path}大文件.txt', 'r', encoding='utf-8') as fileObj:
    print(rf'{path}大文件.txt')
    for line in fileObj:
        print(line,end="")
        g = re.search(r'\[(\d+)\]|\bsd (\d+)\b',line)
        if g:
            j = g.group(1) if g.group(1)!=None else g.group(2)
            dic.setdefault(j,[]).append(line)
        g = re.search(r'compare|time to read',line)
        if g:
            lis.append(line)

for k,v in dic.items():
    with open(rf'{path}txt{k}.txt', 'w', encoding='utf-8') as fileObj:
        fileObj.writelines(v)
    print(rf'{path}txt{k}.txt')
    print(*v,sep="")

with open(rf'{path}txt.txt', 'w', encoding='utf-8') as fileObj:
    fileObj.writelines(lis)
print(rf'{path}txt.txt')
print(*lis,sep="")

1.关键字有两种,一种是[0],[1],[2],[3]......[25]
一种是sd 0,sd 1,sd 2,sd 3,......sd 25
需要在最大文件内查找出带有这些关键字的line,并且全部输出到txt,并且需要按照含有 [0]和sd 0放在一个txt0里然后含有[1]和 sd 1也放在一个txt1里,以此类推生成多个txt。
2.这时在将这些输出的txt进行在再查找关键字(这个关键字是compare,time to read)并且分别在输出txt
3.两次的输出都需要放在一个文件夹下

简单啊!代码私信给你

可以先用正则表达式筛选出符合条件的line:
sd \d|[\d]
然后再分类
compare|time to read

最好能提供一个待处理问题,然后写出期待结果,这样才能保证需求理解不偏