【问题标题】:Remove some part from the text using regex in python3.x使用 python3.x 中的正则表达式从文本中删除某些部分
【发布时间】:2019-04-01 17:49:06
【问题描述】:

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

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

【问题讨论】:

    标签: regex python-3.x replace


    【解决方案1】:

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

    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
    

    【讨论】:

    • 谢谢约翰!我知道它需要一些复杂的正则表达式模式。但是我对正则表达式仍然很天真,这就是为什么它对我来说是一个挑战。
    • 运行此代码时出现`IndexError: list index out of range`。
    • 结果我只得到了前三行。
    • 我在原来的帖子中做了一个小改动。我刚刚测试过它并且它有效。试试看
    【解决方案2】:

    这个怎么样?

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

    请注意,它也会删除 Kdriver:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-20
      • 2021-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多