如何删除结尾有不同数字的字符串

2024-09-29 20:29:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图删除一个以SRR开头,以“length=varying numbers with a varying length”结尾的字符串。我只知道这个数字在1到200之间。。。你知道吗

我不知道怎么做,也不知道哪种方法最有效。我正在处理大文件(>;10GB)。你知道吗

我想对从1到200的所有值进行循环测试:

import os
import re
f2 = open(r'path')
num = 0
while num < 200:
    num = num+1
    ident2 = re.compile('SRR.*?%d' %num, re.DOTALL)
    stuff = f2.read()
    for line in f2:
        ident2.sub('',stuff)

代码总的来说要长得多,但是是的,我确实在最后写了一些东西。我只是想知道我是否可以使用一个表达式,将考虑到每一个数字,并删除字符串。。。你知道吗

任何建议和建设性的批评都将不胜感激。你知道吗

我添加了一个文本输入示例:

@SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50TTGCCTGCCTATCATTTTAGTGCCTGTGAGGTGGAGATGTGAGGATCAGT+SRR566546.970 HWUSI-EAS1673_11067_FC7070M:4:1:2299:1109 length=50hhhhhhhhhhghhghhhhhfhhhhhfffffe`ee[`X]b[d[ed`[Y[^Y

这都是一行,我有许多类似的序列重复。你知道吗


Tags: 字符串importre数字lengthnumf2numbers
1条回答
网友
1楼 · 发布于 2024-09-29 20:29:22

仅匹配数字:

re.compile('SRR.*?\d{1,3}', re.DOTALL)

\d匹配字符0-9,{1,3}匹配其中1到3个字符。你知道吗

如果不想匹配以SRR开头然后后跟大于200的数字的任何内容,可以创建一个更挑剔的表达式:

re.compile('SRR.*?(?:[1-9]|[1-9]\d|1\d{2}|200)', re.DOTALL)

匹配1到9之间的一位数,10到99之间的两位数,100到199之间的三位数,数字200。你知道吗

这些表达式都不能阻止匹配后面跟着更多的数字。您可能需要将\b边界锚点添加到表达式的末尾:

re.compile('SRR.*?\d{1,3}\b', re.DOTALL)

对于您发布的示例,我将显式地包含length=参数:

re.compile('SRR.*?length=(?:[1-9]|[1-9]\d|1\d{2}|200)', re.DOTALL)

相关问题 更多 >

    热门问题