这是我的任务:我有一个带有以下文本行的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 #####:”开头,其中#####是唯一代码。我的任务是使用
在Python中读取此文件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的新手。谢谢!
答案 0 :(得分:0)
如何?打开输入文件,一行一行地读取它,用一个空字符串替换“ 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")
答案 1 :(得分:0)
您可以创建一个新数组,并检查原始数组的每一行(如果该行中有'WARNING'),然后在第二' '
处对其进行切片,然后将该行添加到新数组中(如果其中没有警告)行,将其未经修改地添加。
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