python замена содержимого файла на регулярное выражение и начало строки - PullRequest
0 голосов
/ 23 января 2020
import re

with open(inputfile,"r") as file:
    content=file.read()
    print(re.sub(r'^(?:[^\|]*\|){38}([^\|]+)','XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX', content,  flags = re.MULTILINE|re.S))
    file.close()

Я пытаюсь заменить указанную c часть журнала. функция re.sub устанавливает символ конца строки \ n Логлайн прерывается.

ввод:

| Пт De c 13 05:18:07 UT C 2019 || STAAAAAAEC |||||| 0 DA2AAAAAC | 00000000000000 000000000 | SAAAAAAAAAAAAAAAAtry | BusAAAAAAAAAAAAAAAALog ||||| IAAAAAAAAAA01 | AAAAAAAAAAAAAAAP ||||||||||||||||| B7AAAAAAAAAAAAAAAAA71 || iAAAAAAAAAAAA01 | |||||||||||||||||||||||||||||||||||||||||||||| DAAAAAAAAAro || Sng || PrAAAAAAAAAAAAAAAeter |||||||||||| 3000 ||||||||||||||||||||| 173 || ByAAAAAAAAAAAAAAAed |||| Bys |||| | UpdAAAAAsk ||||| i3taAAAAAA01 |||| RSM13000 |||| IAAAAAA01 ||| IAAAAA01 || AP ||| AP |||| Пт Де c 13 05:18:07 UT C 2019 | Пт Де c 13 05:18:07 UTC 2019 |||||| CAAAAA2 |||| IAAAAA1 |||| AAAAAP ||||||||||||||||| | Пт Де c 13 05:18:07 UTC 2019 || STACCCCEC |||||||| Sy | Bus ||||| CCCC01 | AP |||||||||||||| ||| B74CCCCCCCCCCCCCCCCC48527 || значения | имя хоста ||||| clAAAAAAAor ||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||| 500 || ByAAAAAAed ||| | Байт ||||| RAAAC ||||| iAAAAAA1 |||| RAAAC |||| IAAAAA1 ||| IAAAAAAAA01 || AAAAAAP ||| AAAAAP ||| Пт Де c 13 05:18:07 UT C 2019 | Пт De c 13 05:18:07 UTC 2019 |||||| HCLAAAAATE |||| IAAA01 |||| AAAAP |||||||||||||| |||

ожидаемый результат:

| Пт Де c 13 05:18:07 UT C 2019 || STAAAAAAEC |||||| 0 DA2AAAAAC | 000000000000 000000000 | SAAAAAAAAAAAAAAAtry | BusAAAAAAAAAAAAAAAALOG ||||| IAAAAAAAAA01 | AAAAAAAAAAAAAAP ||||AAAAAAAA |||||||||||||||||||||||||||||||| DAAAAAAAAAro || Sng || PrAAAAAAAAAAAAAAAeter ||||||||||| | 3000 ||||||||||||||||||||| 173 || ByAAAAAAAAAAAAAAAed |||| Bys ||||| UpdAAAAAsk ||||| i3taAAAAAA01 |||| RSM13000 | ||| IAAAAAA01 ||| IAAAAA01 || AP ||| AP |||| Пт Де c 13 05:18:07 UT C 2 019 | Пт Де c 13 05:18:07 UT C 2019 |||||| CAAAAA2 |||| IAAAAA1 |||| AAAAAP ||||||||||||||| || | Пт De c 13 05:18:07 UT C 2019 || STACCCCEC |||||||| Sy | Bus ||||| CCCC01 | AP ||||||||||| |||||| B74CCCCCCCCCCCCCCCCC48527 || значения | XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ||||| clAAAAAAAor |||||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||||||||| 500 || ByAAAAAAed |||| Байты ||||| RAAAC ||||| iAAAAAA1 |||| RAAAC |||| IAAAAA1 ||| IAAAAAAAA01 || AAAAAAP ||| AAAAAP ||| AAAAAP ||| Пт Де c 13 05: 18:07 UT C 2019 | Пт De c 13 05:18:07 UT C 2019 |||||| HCLAAAAATE |||| IAAA01 |||| AAAAP |||||||| |||||||||

вывод: как вы видите, линия разрывается до XXXX

| Пт De c 13 05:18:07 UT C 2019 || STAAAAAAEC |||||| 0 DA2AAAAAC | 00000000000000 000000000 | SAAAAAAAAAAAAAAAAtry | BusAAAAAAAAAAAAAAAALog ||||| IAAAAAAAAAA01 | AAAAAAAAAAAAAAAP ||||||||||||||||| B7AAAAAAAAAAAAAAAAA71 || iAAAAAAAAAAAA01 | |||||||||||||||||||||||||||||||||||||||||||||| DAAAAAAAAAro || Sng || PrAAAAAAAAAAAAAAAeter |||||||||||| 3000 ||||||||||||||||||||| 173 || ByAAAAAAAAAAAAAAAed |||| Bys |||| | UpdAAAAAsk ||||| i3taAAAAAA01 ||| | RSM13000 |||| IAAAAAA01 ||| IAAAAA01 || AP ||| AP |||| Пт Де c 13 05:18:07 UT C 2019 | Пт De c 13 05:18:07 UTC 2019 |||||| CAAAAA2 |||| IAAAAA1 |||| AAAAAP |||||||||||||||| XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ||||| clAAAAAAAor ||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||| 500 || ByAAAAAAed |||| Б ||||| RAAAC ||||| iAAAAAA1 |||| RAAAC |||| IAAAAA1 ||| IAAAAAAAA01 || AAAAAAP ||| AAAAAP |||| Пт Де c 13 05:18:07 UT C 2019 | Пт Де c 13 05:18:07 UTC 2019 |||||| HCLAAAAATE |||| IAAA01 |||| AAAAP |||||||||||||||||||||||||||||

1 Ответ

0 голосов
/ 24 января 2020

с открытым (inputfile, "r") в качестве файла: content = file.read ()

mat = re.match(r'(^(?:[^\|]*\|){38})([^\|]+)(.*\n)', content,flags = re.MULTILINE|re.S)
print(mat.group(1)+" XXXXXXXXXXXXXXXXX"+mat.group(3))

file.close()

Я нашел другое решение, в котором я использую групповую функцию.

спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...