Python 发生后提取数字字符?

Python 发生后提取数字字符?,python,regex,search,extract,digit,Python,Regex,Search,Extract,Digit,我有一个字符串,我想提取在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.app

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


如果我需要澄清任何不同的问题,请告诉我。您可以使用“查找”功能:

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

lookback不吃字符,您不会在匹配中检索字符。

您可以使用lookback:

temp_ID.append((re.search(r'(?<=exon_number\s"")\d{1,2}',k).group(0)))
temp_ID.append((re.search(r'exon_number\s""(\d)""',k).group(1)))
lookbehind不吃角色,您不会在匹配中检索角色

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)))
但是如果你想得到一个两位数,你可以把它改成

temp_ID.append((re.search(r'exon_number\s""(\d+)""',k).group(1)))

编辑:为了澄清,每一组参数都是一个组,您可以在以后访问,并且\d+表示它将匹配1个或多个数字

您只需移动括号即可

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)))
编辑:为了澄清,每一组参数都将是一个组,您可以在以后访问,\d+表示它将匹配1个或多个数字