Python 3.6使用关于芬德尔从数组元素中提取子串

2024-07-03 07:25:01 发布

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

我从Python那里休息了很长时间,现在我再次需要你的帮助:)

我有一个数组,看起来像这样:

['>lcl|NC_003078.1_gene_1 [gene=lacE] [locus_tag=SM_b21652] [location=1..1275]\n','>lcl|NC_003078.1_gene_2 [gene=lacF] [locus_tag=SM_b21653] [location=complement(22345..23337)]\n']

数组包含更多的条目,所有这些看起来都像提供的示例。我想用Regex提取每个元素的一部分。我要提取的部分是

[location.....]

我使用Regexr来构建我的regex,我尝试了以下方法:

locationArray=[]
for entry in storageArray:
    location.Array.append((re.findall("(\[location=\d*|complement\(\d*\.\.\d*\)\]|\.\.\d*\]))",str(entry))))
print(locationArray)

在浏览器中使用Regexr时,Regex似乎可以工作。你知道吗

预期/期望输出:

['[location=...]','[location=...]' etc]

实际输出:

[['cE]', '_b21625]','[location=1','..1257]'],

与输入比较,从基因和位点标签中提取部分。 我不明白,为什么我把数组结构弄错了?是关于我的正则表达式吗?你知道吗

感谢您的帮助!你知道吗

然而,这并不是我最终想要的结果。提取完所有位置后,我想处理它们,结果如下:

Start:     1 End:  1275
Start: 22345 End: 23337

因为我甚至没有提取位置部分,所以我已经在这里询问了。

谢谢你的帮助。我也很欣赏解决问题的不同方法。很可能,我的方法不是最好的?你知道吗


Tags: 方法taglocation数组startregexsmentry
1条回答
网友
1楼 · 发布于 2024-07-03 07:25:01
import re
a = ['>lcl|NC_003078.1_gene_1 [gene=lacE] [locus_tag=SM_b21652] [location=1..1275]\n','>lcl|NC_003078.1_gene_2 [gene=lacF] [locus_tag=SM_b21653] [location=complement(22345..23337)]\n']
for i in a:
    val = re.findall("location\=.*?]", i)[0]     #Find Location.
    val = re.findall("\d+", val)                 #Find start and end.
    print("Start: {0} End:  {1}".format(val[0], val[1]))

输出:

Start: 1 End:  1275
Start: 22345 End:  23337

相关问题 更多 >