如何在python中为列表的每个对象提取两个标记之间的字符串

如何在python中为列表的每个对象提取两个标记之间的字符串,python,string,list,extract,Python,String,List,Extract,我有一张字符串列表。这些字符串中有所有的两个标记。我想为列表中的每个字符串提取这两个标记之间的字符串 例如: markers 'XXX' and 'YYY' --> therefore i want to extract 78665786 and 6866 ['XXX78665786YYYjajk', 'XXX6866YYYz6767'....] 你只需在你的列表上循环一下就可以了。您可以执行以下操作: import re my_list = ['XXX78665786YYYjaj

我有一张字符串列表。这些字符串中有所有的两个标记。我想为列表中的每个字符串提取这两个标记之间的字符串

例如:

markers 'XXX' and 'YYY' --> therefore i want to extract 78665786 and 6866 

['XXX78665786YYYjajk', 'XXX6866YYYz6767'....]

你只需在你的列表上循环一下就可以了。您可以执行以下操作:

import re

my_list = ['XXX78665786YYYjajk', 'XXX6866YYYz6767']
output = []
for item in my_list:
    output.append(re.search('XXX(.*)YYY', item).group(1))

print(output)
输出:

['78665786', '6866']
命令split()将字符串拆分为不同的部分

list1 = ['XXX78665786YYYjajk', 'XXX6866YYYz6767']
list2 = []

for i in list1:
    d = i.split("XXX")
    for g in d:
        d = g.split("YYY")
        list2.append(d)

print(list2)
它被保存到一个列表中

import re
l = ['XXX78665786YYYjajk', 'XXX6866YYYz6767'....]
l = [re.search(r'XXX(.*)YYY', i).group(1) for i in l]

这应该行得通

另一个解决方案是:

import re
test_string=['XXX78665786YYYjajk','XXX78665783336YYYjajk']
int_val=[int(re.search(r'\d+', x).group()) for x in test_string]

您可以为lst中的s应用字符串切片:
[s[s.index('XXX')+3:s.index('YYY')]。或者使用:
[re.search(“XXX(.*)YYY”,s).group(1)在lst中搜索s]
。感谢您的回答。+3:代表什么?
3
'XXX'
字符串的长度,因此我们需要将其添加到结果中不包含
XXX
。确定。我们可以忽略YYY的长度?是的,
str.index()
返回子字符串中第一个字符的索引。这绝对不是用于此的最佳正则表达式模式,有太多的情况可能会失败。我得到以下信息-->'NoneType'对象没有属性'group'@derpaminontas_1992,这意味着字符串中没有匹配的模式,所以它返回了
None
@derpaminontas_1992你能评论一下你写的东西吗?只要表达式和字符串包含相同的模式,它就会找到子字符串。我发现了错误。下面代码后面的列表包含两个在fasta_文件中没有forw_primer和rev_primer的字符串:match=[p代表fasta_文件中的p,如果在p中有forw_primer和rev_primer]问题是,我不知道为什么还有另外两个没有标记的序列。请使用try和except。确保准确记录不符合预期的内容,并检查数据集以及从何处获取数据。我在这里的示例中得到了-->AttributeError:“NoneType”对象没有属性“group”,您可以将正在使用的列表粘贴到这里吗。此错误是缺少给定模式的结果,即“XXX{some string}YYY”。我发现了错误。下面代码后面的列表包含两个在fasta_文件中没有forw_primer和rev_primer的字符串:match=[p对于fasta_文件中的p,如果forw_primer和rev_primer在p中]问题是,我不知道为什么我得到了另外两个没有标记的序列