非常に形の悪いファイルがありますが、それを解析して1つを除いて必要な値のほとんどを抽出できます。そして、可変長を抽出するための正規表現の手助けが必要です。Pythonで正規表現を使用して可変長の数字を抽出します
他の機能を解析して抽出するために、リストインデックスと '|'、 ''、 ':'という異なるスプライタを使用しました。しかし、この場合、私はブロックすることができており(下)、それぞれの行に対して '_'の周りの数字をxとyとして別々に抽出する必要があります。
「:」で区切り、最後に「 - 」で区切ってインデックス位置[0]と[1]を抽出する方法もありますが、これは最も効率的な方法ですそう。
CHR 5:17399789から17401949 REVERSE
CHR 5:FORWARD 6414488から6415907
CHR 5:FORWARD 2981156から2982709
CHR 5:6311725から6313323 REVERSE
CHR 5:12791432から12794551 REVERSE
chr5:927915-930781 FORWARD
CHR 5:FORWARD 19585936から19587841
CHR 5:FORWARD 26894856から26896488
CHR 5:18138775から18142147 REVERSE
CHR 5:20537525から20538943 REVERSE
CHR 5:22496196から22500543 REVERSE
chr5:4747860-4753592逆戻り
上記のブロックは、このような「大きなブロック」から来ています:
AT1G09410.1 |シンボル:|ペンタトリペプチド(PPR)反復含有タンパク質| chr1:3035443-3037560 FORWARD
「より大きなブロック」でも抽出できますか?
私のプログラミングレベルは、初心者の方に最適と言えるでしょう。あなたが実際にそれぞれの上に正規表現を実行した後、最後に
numericalBlockRegEx = r'chr\d+:(?P<firstNumBlock>\d+)-(?P<secondNumBlock>\d+)'
:
AK
出力を具体的に投稿してください。 –
@JoelCornett:出力をこの形式の17399789,17401949にします。私はすべての行から '大きなブロック'を読んで、 '|'上記のブロックである[-1]を抽出するには、digit1、digit2として ' - 'で区切られた数字を抽出する必要があります。私は既存のループに抽出を入れることができますが、数字を抽出して変数に代入する正規表現が必要です。 – Bade