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