Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中使用正则表达式提取可变长度的数字_Python_Regex_List_Extraction - Fatal编程技术网

在python中使用正则表达式提取可变长度的数字

在python中使用正则表达式提取可变长度的数字,python,regex,list,extraction,Python,Regex,List,Extraction,我有一个非常糟糕的文件,但我能够解析它,并提取除一个以外所需的大多数值。我需要你帮助我如何使用正则表达式来提取一个可变长度的数字 为了解析和提取其他功能,我使用了列表索引以及不同的spliiter“|”、”和“:”。但是在这种情况下,我能够到达块(下面),并且必须为每一行分别提取“u”周围的数字,如x和y 一种方法是先按“:”拆分,然后按“”拆分,最后按“-”拆分,然后提取索引位置[0]和[1],但这是最有效的方法 chr5:17399789-17401949反向 chr5:6414488-64

我有一个非常糟糕的文件,但我能够解析它,并提取除一个以外所需的大多数值。我需要你帮助我如何使用正则表达式来提取一个可变长度的数字

为了解析和提取其他功能,我使用了列表索引以及不同的spliiter“|”、”和“:”。但是在这种情况下,我能够到达块(下面),并且必须为每一行分别提取“u”周围的数字,如x和y

一种方法是先按“:”拆分,然后按“”拆分,最后按“-”拆分,然后提取索引位置[0]和[1],但这是最有效的方法

chr5:17399789-17401949反向

chr5:6414488-6415907前进

chr5:2981156-2982709转发

chr5:6311725-6313323反向

chr5:12791432-12794551反面

chr5:927915-930781向前

chr5:19585936-19587841前进

chr5:26894856-26896488转发

chr5:18138775-18142147反面

chr5:20537525-20538943反向

chr5:22496196-22500543反向

chr5:47860-4753592反向

上述区块来自“较大区块”,如下所示:

AT1G09410.1 |符号:|含有蛋白质的五三肽(PPR)重复序列| chr1:3035443-3037560正向

我也可以在“大街区”提取吗

我的编程水平可以最好地描述为初学者,需要你的帮助

谢谢


AK

一种方法是将正则表达式定义为以下Python“原始”字符串:


干杯

你能把你想要的输出具体地写出来吗?@JoelCornett:我希望输出是:1739978917401949,用这种格式。我从每一行中读取“大块”,然后用“|”分割以提取[-1],这是上面的块,从中我需要提取以“-”分隔的数字作为digit1,digit2。我可以将提取放在现有循环中,但需要正则表达式来提取数字并分配给变量。
    numericalBlockRegEx = r'chr\d+:(?P<firstNumBlock>\d+)-(?P<secondNumBlock>\d+)'
    x = match.group('firstNumBlock') #Gets first number block matched
    y = match.group('secondNumBlock') #Gets second number block matched