gpt4 book ai didi

python - 如何删除末尾具有不同数字的字符串

转载 作者:太空宇宙 更新时间:2023-11-04 03:57:36 25 4
gpt4 key购买 nike

我正在尝试删除以 SRR 开头并以“长度 = 具有不同长度的不同数字”结尾的字符串。关于这个数字,我只知道它在 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

都是一行,我有很多重复的相似序列。

最佳答案

只匹配数字:

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 边界 anchor 添加到表达式的末尾:

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)

关于python - 如何删除末尾具有不同数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17435012/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com