Как удалить подстроки из строк списка, начинающихся с определенной последовательности символов, и сгенерировать выходной файл - PullRequest
0 голосов
/ 26 ноября 2018

Итак, вот моя задача: у меня есть этот 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

В конце концов список будет записан в новый файл .txt с именем output.txt

По существу, в каждой строке списка, начинающейся с «WARINIG», должны быть удалены первые 15 символов (с учетом пробелов).Код ##### всегда отличается, и файл file.txt будет содержать тысячи строк.Я новичок в Python.Спасибо!

Ответы [ 2 ]

0 голосов
/ 26 ноября 2018

Вы можете создать новый массив и проверить каждую строку исходного массива, если есть '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
0 голосов
/ 26 ноября 2018

Как насчет этого.Откройте входной файл, прочитайте его строку за строкой, замените «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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...