Python 如何从以特定字符序列开头的列表行中删除子字符串并生成输出文件

Python 如何从以特定字符序列开头的列表行中删除子字符串并生成输出文件,python,list,Python,List,这就是我的任务:我有一个file.txt文件,其中包含以下文本行: CODE 1 DXVB: TLH - 188JSUY23000DI12 CODE 2 DXVB: DDH - 6SJ27GFKKKK29R82 CODE 3 DXVB: TSS - 9S676J1J87S88WJ2 WARNING 55DE2: CODE 4 DXVB: ASE - UDY239FJM9S7J25F CODE 5 DXVB: RRE - DFUA83J398D7G928 WARNING 33E65: CODE 6

这就是我的任务:我有一个file.txt文件,其中包含以下文本行:

CODE 1 DXVB: TLH - 188JSUY23000DI12
CODE 2 DXVB: DDH - 6SJ27GFKKKK29R82
CODE 3 DXVB: TSS - 9S676J1J87S88WJ2
WARNING 55DE2: CODE 4 DXVB: ASE - UDY239FJM9S7J25F
CODE 5 DXVB: RRE - DFUA83J398D7G928
WARNING 33E65: CODE 6 DXVB: RGR - FDS89987432JHOFE
WARNING 13WWQ: CODE 7 DXVB: HTR - DF7A09883J319SST
CODE 8 DXVB: YUY - 88324J269S7JJWQI
如您所见,有些行以子字符串“WARNING”(警告)开头:“where(其中)是唯一的代码。我的任务是使用

with open('file.txt', 'r') as f:
    lines = f.readlines()
然后编辑列表,以便删除具有上述格式的所有子字符串,最终列表如下所示:

CODE 1 DXVB: TLH - 188JSUY23000DI12
CODE 2 DXVB: DDH - 6SJ27GFKKKK29R82
CODE 3 DXVB: TSS - 9S676J1J87S88WJ2
CODE 4 DXVB: ASE - UDY239FJM9S7J25F
CODE 5 DXVB: RRE - DFUA83J398D7G928
CODE 6 DXVB: RGR - FDS89987432JHOFE
CODE 7 DXVB: HTR - DF7A09883J319SST
CODE 8 DXVB: YUY - 88324J269S7JJWQI
该列表最终将写入名为output.txt的新.txt文件中


基本上,每个以“WARINIG”开头的列表行都应该删除其前15个字符(计入空格)。#######代码总是不同的,file.txt将有数千行。我是Python新手。谢谢大家!

这个怎么样。打开输入文件,逐行读取,用空字符串替换“WARNING…”,然后将其写入输出文件

import re

rgx = r"^WARNING\s\w+:\s"
with open('file.txt', 'r') as fin, open('file_out.txt', 'w') as fout:
  for line in fin:
    fout.write(re.sub(rgx, "", line) + "\n")

您可以创建新数组并检查原始数组中的每一行,如果该行中有“警告”,则在第二个
'
处对其进行切片,然后将该行添加到新数组中,如果该行中没有警告,则不加修改地添加该行

with open('file.txt', 'r') as f:
    lines = f.read().splitlines()
    new_lines = [' '.join(i.split()[2:]) if 'WARNING'in i else i for i in lines]

with open('new_file.txt', 'w') as f:
    f.write('\n'.join(new_lines))
输出:

CODE 1 DXVB: TLH - 188JSUY23000DI12
CODE 2 DXVB: DDH - 6SJ27GFKKKK29R82
CODE 3 DXVB: TSS - 9S676J1J87S88WJ2
CODE 4 DXVB: ASE - UDY239FJM9S7J25F
CODE 5 DXVB: RRE - DFUA83J398D7G928
CODE 6 DXVB: RGR - FDS89987432JHOFE
CODE 7 DXVB: HTR - DF7A09883J319SST
CODE 8 DXVB: YUY - 88324J269S7JJWQI

堆栈溢出不是代码编写服务。你必须研究这个问题,试着找出一个解决方案,如果你陷入困境,就带着一个具体的问题回来。非常感谢你,正则表达式确实是最简单的解决方案。