用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
最好能提供一个待处理问题,然后写出期待结果,这样才能保证需求理解不偏