【问题标题】:Extract digit characters after occurrence?出现后提取数字字符?
【发布时间】:2013-06-05 21:16:05
【问题描述】:

我有一个字符串,我想提取介于 ""X"" 两个括号之间的 exon_number

我使用 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] 位置

如果我需要澄清任何不同的地方,请告诉我

【问题讨论】:

    标签: python regex search extract digit


    【解决方案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 个或多个数字

    【讨论】:

      【解决方案2】:
      temp_ID.append((re.search(r'exon_number\s""(\d)""',k).group(1)))
      

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

      【讨论】:

        【解决方案3】:

        你可以使用lookbehind:

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

        lookbehind 不吃字符,你不会在比赛中检索它们。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-09-07
          • 2018-04-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多