2012-04-28 10 views
-3

を作るためにラインの部品を追加する:私はこのような行を持つファイル有する配列ライン(パイソン)

NM_198212 CHR 7 + 115926679 115935830 115927071 11593344 2 115926679,115933260、(この列に興味が、これらの数であります

最後の2つの列(カンマで区切られたもの)は、可変量の整数を持つことができます。これは、エクソンの開始点として知られる115927221,115935830です(これをエクソン端と呼びます)。 (CHR 7 |

NM_198212:私は、ファイルの最初の行を持っていた場合、私はこのように見えた行をしたいと思う、それは5つのカンマで区切られた数字、あるいは15

を持つことができます意味+):115926679から115935830 | 115926679-115927221,115933260-115935830(まだこれがスタートの量に基づいて、上に行く可能性があり、与えられた終了)単純な規模では

NM _ ????私はその情報の行の最後がコードが書き込まれる可能性がどのように10-20,50-60,100-110

になりたい10 110 10 110 3 10,50,100、20,60,110、

- chr12私が出力したい行の終わりに、数字の量にかかわらずこれらのそれぞれを含めます。

私はこのコードを持っています。それが役立つなら、すべての開始と終了をペアにします。

fp = (infile, 'r') 
for line in fp: 
    tokens = line.split() 
    exonstarts = tokens[8][:-1].split(',') 
    exonends = tokens[9][:-1].split(',') 
    zipped = list(zip(exonstarts, exonends)) 

上記の例では、zippedは[(10,20)、(50,60)、(100,110)]になります。私の質問は、これを私の希望する情報ラインに組み込む方法です(私は、開始と終了を組み込んだ部分を除いて、表現全体を書いています)。

こうして、リストから抜け出す方法はわかりませんフォーマット私は希望を確認してください

+1

あなたのprevioの回答を確認する私たちの質問:http://stackoverflow.com/questions/10359511/pulling-parts-from-a-string-python – garnertb

答えて

2

ないが、これはあなたが後にしているものですが、:。

range_str = ",".join(["%s-%s" % item for item in zipped]) 

場合はzip形式== [(10、20)、(50、60)、(100、110)]

10-20,50-60,100-110 
+0

はい、実際それは問題です!ありがとう! –

関連する問題