我有一个包含以下字符串的文件:
NM_???? chr12 - 10 110 10 110 3 10,50,100, 20,60,110,
我对最后两列很感兴趣,第一列是逗号分隔的exonstart列表,最后一列是以逗号分隔的exonends列表。
那就是说,我做了以下事情:
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]
有没有办法我可以轻易说出这个?
答案 0 :(得分:4)
我认为最恐怖的方式是:
''.join(chr_string[a[0]:a[1]] for a in myList)
答案 1 :(得分:2)
"".join(chr_string[slice(*exon_interval)] for exon_interval in zipped)
答案 2 :(得分: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'