Удалите некоторую часть из текста с помощью регулярных выражений в python3.x - PullRequest
0 голосов
/ 01 апреля 2019

Мне нужно удалить часть до : из всех строк (исключая : в формате datetime), указанных ниже. Есть ли способ выбрать длину и заменить ее на "".

a.txt

Mon Sep 17 04:01:35 2018 abc.mnba:15885: afhoashfodcasnc.
Mon Sep 17 04:01:35 2018 abc.mnba:16199: inancaaldajijeijiodncna
Mon Sep 17 04:01:35 2018 abc:9: iunancn andjcadjjacnn noancoan
Mon Sep 17 04:01:35 2018 abc: abc = {
          'uf' => '',
          'uft' => 'afbcjbja',
          'ufd' => 'saflkacklmsakcmk',
          'ufc' => 'ubakcb'
        };

Ожидаемое решение

afhoashfodcasnc.
inancaaldajijeijiodncna
iunancn andjcadjjacnn noancoan
$abc = {
          'uf' => '',
          'uft' => 'afbcjbja',
          'ufd' => 'saflkacklmsakcmk',
          'ufc' => 'ubakcb'
        };
askpfmkasmkvmksamvmk
Kdriver: jafnajncjjanjnnfjnjajjf 
fkcjkackkakkafjkajkfjdka
I hcjfdajnfcjnajncjjanjnjnjndjnfjcnjn
I afkjakcnakkdfjncnalldkfkdafkccnnlkn 

kdfjkackanjdnfjajsfdcjcnjnjanjnfcaksfaljscll
fajncjnjanjdnfjnajsdnfjcnjakncjajnfjajdfjanjncjnjnja
ijfiandfnanejfdcijiandnajfnejdfhncncjnjanjnedfncjanncfjanjcnj
akmfkcmkmakmkdmfekmfkmkckmakmdkmfkmkamdfcammdckmckcmkckdkal ladmflmalcml

Мое решение

import re

with open("a.txt", 'r') as f:
    for lines in f:
        line = re.sub(r"^.{20}", "", lines)
        print(line)

Ответы [ 2 ]

1 голос
/ 01 апреля 2019

Шаблон должен быть немного сложнее, чем вы предлагаете. Я проверил это, и, кажется, получить ожидаемый результат:

import re

with open("a.txt", 'r') as f:
    for lines in f:
        if ":" in lines:
            line = re.findall(r":\s?\D.+$", lines)[0][1:].strip()
        else:
            line = lines
        print(line)

Это распечатывает следующий результат

afhoashfodcasnc.
inancaaldajijeijiodncna
iunancn andjcadjjacnn noancoan
$abc = {
          'uf' => '',
          'uft' => 'afbcjbja',
          'ufd' => 'saflkacklmsakcmk',
          'ufc' => 'ubakcb'
        };
askpfmkasmkvmksamvmk
Kdriver: jafnajncjjanjnnfjnjajjf 
fkcjkackkakkafjkajkfjdka
I hcjfdajnfcjnajncjjanjnjnjndjnfjcnjn
I afkjakcnakkdfjncnalldkfkdafkccnnlkn 

kdfjkackanjdnfjajsfdcjcnjnjanjnfcaksfaljscll
fajncjnjanjdnfjnajsdnfjcnjakncjajnfjajdfjanjncjnjnja
ijfiandfnanejfdcijiandnajfnejdfhncncjnjanjnedfncjanncfjanjcnj
akmfkcmkmakmkdmfekmfkmkckmakmdkmfkmkamdfcammdckmckcmkckdkal ladmflmalcml
1 голос
/ 01 апреля 2019

Как насчет этого?

import re

with open("a.txt", 'r') as f:
    for lines in f:
        line = re.sub(r".*:", "", lines)
        print(line)

Обратите внимание, что он также удаляет Kdriver: .

...