我有一个字符串,我想提取exon_number,它位于“” X “”两个括号
之间我使用re.search查找'exon_number'的出现但我不想在最终输出中包含字符串exon_number
示例:
temp_ID = []
k = '"gene_id ""XLOC_000001""; transcript_id ""TCONS_00000001""; exon_number ""1""; oId ""CUFF.17.1""; tss_id ""TSS1"";"'#input string
temp_ID.append((re.search(r'(exon_number\s""\d"")',k).group(1)))
print temp_ID
>['exon_number ""2""']
desired_output = ['2']
我希望输出只是两个" "
之间的值
因为它可以是单个数字/双位数字,所以我不能选择[-3]位置
让我知道我是否需要澄清任何不同的
答案 0 :(得分:3)
您只需要移动括号
temp_ID.append((re.search(r'exon_number\s""(\d)""',k).group(1)))
但是如果你想要抓住一个两位数,你可以将其改为
temp_ID.append((re.search(r'exon_number\s""(\d+)""',k).group(1)))
编辑:为了澄清,每组parens将是您之后可以访问的组,而\d+
表示它将匹配1位或更多位
答案 1 :(得分:1)
temp_ID.append((re.search(r'exon_number\s""(\d)""',k).group(1)))
答案 2 :(得分:0)
你可以使用lookbehind:
temp_ID.append((re.search(r'(?<=exon_number\s"")\d{1,2}',k).group(0)))
守望者不吃字符,你不会在比赛中找回它们。