首页 > 解决方案 > 使用 python3.x 中的正则表达式从文本中删除某些部分

问题描述

我需要:从下面给出的所有行(不包括:以日期时间格式出现)中删除该部分。有没有办法选择长度并将其替换为“”。

一个.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)

标签: regexpython-3.xreplace

解决方案


模式必须比你的建议复杂一点。我已经对此进行了测试,它似乎得到了您的预期结果:

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

推荐阅读