1

次のような文字列を含むファイルがあります。

NM_???? chr12 - 10 110 10 110 3 10,50,100, 20,60,110,

最後の 2 つの列に興味があります。最初の列はエクソンスタートのカンマ区切りのリストで、最後の列はエクソンエンドのカンマ区切りのリストです。

とは言っても、私は次のことをしました:

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

これで、次のようなリストができました。

[(10, 20), (50, 60), (100, 110)]

私には別の問題があります。たとえば、私はchr_string[10:20]+chr_string[50:60]+chr_string[100:110]これを簡単に言う方法はありますか??

4

3 に答える 3

4

それを言う最もPythonicな方法は次のとおりだと思います:

''.join(chr_string[a[0]:a[1]] for a in myList)
于 2012-04-28T00:42:07.900 に答える
2
"".join(chr_string[slice(*exon_interval)] for exon_interval in zipped)
于 2012-04-28T00:47:44.843 に答える
1

これらのペアを使用して(私が作成した)listスライスして取得するには:chr_string

>>> [chr_string[start:end + 1] for start,end in zip(exonstarts, exonends)]
['05060708091', '25262728293', '50515253545']

これらを結合するには:

>>> ''.join(chr_string[start:end + 1] for start,end in zip(exonstarts, exonends))
'050607080912526272829350515253545'
于 2012-04-28T01:00:15.727 に答える