发生后提取数字字符?

时间:2013-06-05 21:16:06

标签: python regex search extract digit

我有一个字符串,我想提取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]位置

让我知道我是否需要澄清任何不同的

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)))

http://docs.python.org/2/howto/regex.html#grouping

答案 2 :(得分:0)

你可以使用lookbehind:

temp_ID.append((re.search(r'(?<=exon_number\s"")\d{1,2}',k).group(0)))

守望者不吃字符,你不会在比赛中找回它们。