Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从字符串中提取零件(python)_Python_String - Fatal编程技术网

从字符串中提取零件(python)

从字符串中提取零件(python),python,string,Python,String,我有一个包含如下字符串的文件: NM_???? chr12 - 10 110 10 110 3 10,50,100, 20,60,110, 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,

我有一个包含如下字符串的文件:

NM_???? chr12 - 10 110 10 110 3 10,50,100, 20,60,110,
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))
我对最后两列感兴趣,第一列是逗号分隔的外显子列表,最后一列是逗号分隔的外显子列表

尽管如此,我已经做了以下工作:

NM_???? chr12 - 10 110 10 110 3 10,50,100, 20,60,110,
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)]

我还有一个问题,我有一个刺,我想要这些碎片。比如说,我想知道有没有一种方法可以让我轻松地说出来呢?

我认为最具python风格的说法是:

''.join(chr_string[a[0]:a[1]] for a in myList)

我认为最具python风格的说法是:

''.join(chr_string[a[0]:a[1]] for a in myList)

要通过使用这些对切片
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'

要通过使用这些对切片
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'


对,但是因为我事先不知道列表中有多少元素。你的代码行只允许两个元素,有没有办法这么说?@PatrickCampbell-Ken的列表将说明列表中的每个元素。在每个元组中有两个以上的元素是没有意义的。这样更好:
'.join(chr_string[start:end]表示开始,在myList中结束)
a[0]
a[1]
是要从
chr_string
中提取的字符的起始值和结束值
myList
将是包含这些值元组的列表(如
[(10,20)、(50,60)、(100,110)]
),可以任意长。谢谢,这太棒了。一如既往地乐于助人!对,但是因为我事先不知道列表中有多少元素。你的代码行只允许两个元素,有没有办法这么说?@PatrickCampbell-Ken的列表将说明列表中的每个元素。在每个元组中有两个以上的元素是没有意义的。这样更好:
'.join(chr_string[start:end]表示开始,在myList中结束)
a[0]
a[1]
是要从
chr_string
中提取的字符的起始值和结束值
myList
将是包含这些值元组的列表(如
[(10,20)、(50,60)、(100,110)]
),可以任意长。谢谢,这太棒了。一如既往地乐于助人!您想要
[10:20]
还是
[10:21]
。切片上的停止索引是非包容性的。如果您是正确的,我希望[10:21]可能是您想要的
[10:20]
[10:21]
的副本。切片上的停止索引是非包容性的。你是对的,我想要[10:21]Joel的可能副本,你在过去一周帮了我这么多。我还有一个问题要问你,然后这个程序应该是功能齐全的。还有你帮我回答的宝贵问题。我需要从染色体的长度中减去每个外显子以得到新的开始,然后从染色体的长度中减去外显子以得到新的结束。然而,我需要再次对每个元素执行此操作,如上所述。有没有办法做到这一点?这涉及到字典和我说的代码行:'.join(bc[base.upper()]for base in chr_string[newstart:newend])@PatrickCampbell:你能给我举个例子吗?最好少于20个字符。@PatrickCampbell:这听起来像是又一个新问题。请阅读一些提示,以获得您第一次寻找的答案!嗯。。。这必须与我在上一个问题中所做的相反的恭维相配合。所以我想从字符串中减去每个exonends(这将给我一个位置,我称之为newstart),然后从字符串中减去每个exonenstart,得到我称之为newend的位置。我想从newstart得到同样的东西:newend。对于每个数字,将它们相加。因此,它与上面的类型相同,但在字符串上的位置不同。我只需要用类似的方式来做,但想不出容易的办法。乔尔,你在过去的一周里帮了我很多。我还有一个问题要问你,然后这个程序应该是功能齐全的。还有你帮我回答的宝贵问题。我需要从染色体的长度中减去每个外显子以得到新的开始,然后从染色体的长度中减去外显子以得到新的结束。然而,我需要再次对每个元素执行此操作,如上所述。有没有办法做到这一点?这涉及到字典和我说的代码行:'.join(bc[base.upper()]for base in chr_string[newstart:newend])@PatrickCampbell:你能给我举个例子吗?最好少于20个字符。@PatrickCampbell:这听起来像是又一个新问题。请阅读一些提示,以获得您第一次寻找的答案!嗯。。。这必须与我在上一个问题中所做的相反的恭维相配合。所以我想从字符串中减去每个exonends(这将给我一个位置,我称之为newstart),然后从字符串中减去每个exonenstart,得到我称之为newend的位置。我想从newstart得到同样的东西:newend。对于每个数字,将它们相加。因此,它与上面的类型相同,但在字符串上的位置不同。我只需要用类似的方法来做,但不能想出简单的办法