gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 23:45:28 28 4
gpt4 key购买 nike

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

为了解析和提取其他功能,我使用了列表索引以及不同的分隔符“|”、“”和“:”。但在这种情况下,我能够到达 block (如下),并且必须为每一行提取“_”周围的数字,分别作为 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:4747860-4753592 反向

上面的 block 来自“更大的 block ”,如下所示:

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

我也可以在“更大的 block ”处提取吗?

我的编程水平可以用初学者来形容,需要你的帮助。

谢谢

AK

最佳答案

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

    numericalBlockRegEx = r'chr\d+:(?P<firstNumBlock>\d+)-(?P<secondNumBlock>\d+)'

最后,一旦您实际在文件的每一行上运行正则表达式(您可能需要使用对 search 的调用而不是匹配),您可以通过简单的方法提取您感兴趣的数字 block 调用:

    x = match.group('firstNumBlock') #Gets first number block matched
y = match.group('secondNumBlock') #Gets second number block matched

干杯!

关于python - 在python中使用正则表达式提取可变长度数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493498/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com