搜索特定模式并删除Python中一行中的模式[复制]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索特定模式并删除Python中一行中的模式[复制]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我在每行的开头都有特定的模式。我想删除该特定模式而不是python中的完整行。从实际文件中检索后,我的数据看起来像

>homo_seg-Val-abc-1-1
>homo_seg-Beg-cdf-2-1
>homo_seg-Try-gfh-3-2
>homo_seg-Fuss-cdh-3-1

在这里,我想从数据集中删除“> homo_seg-”并仅保留以下内容

Val-abc-1-1
Beg-cdf-2-1
Try-gfh-3-2
Fuss-cdh-3-1

我可以在perl中做到这一点

$new =~s/homo_seg-//g;

我的代码是:

import sys
inFile = sys.argv[1]
with open(inFile) as fasta:
    for line in fasta:
        if line.startswith('>'):
            header = line.split()
            t = header[0]

        import re  # from below answer

        regex = r">homo_seg-"

        subst = ""

        result = re.sub(regex, subst, t, 0, re.MULTILINE)
        print(result)

这段代码只给出了最后一行的输出。我知道它有一些小错误但无法接收它。

答案

试试这个:

new_line = old_line[9:]

或者如果你想要更加安全:

if old_line.startswith('homo_seg-') :
    new_line = old_line[9:]
另一答案

你可以查看https://regex101.com/r/hvFquS/1

 import re

 regex = r"homo_seg-"

 test_str = ("homo_seg-Val-abc-1-1
"
    "homo_seg-Beg-cdf-2-1
"
    "homo_seg-Try-gfh-3-2
"
    "homo_seg-Fuss-cdh-3-1")

 subst = ""

 result = re.sub(regex, subst, test_str, 0, re.MULTILINE)

 if result:
     print (result)

以上是关于搜索特定模式并删除Python中一行中的模式[复制]的主要内容,如果未能解决你的问题,请参考以下文章

Redis Python - 如何在python中根据特定模式删除所有键,无需python迭代

通过管道搜索模式到 Sed 中删除文件中的行

FastReport教程在报表的预览模式下复制或删除页面

01_vi的使用

vim技巧3

Python通过列搜索