【问题标题】:Split a list in a list using delimiter使用分隔符拆分列表中的列表
【发布时间】:2018-05-17 16:23:54
【问题描述】:

我有一个这样的列表:

list =['1', '13372', '.', 'G', 'C', '608.91', 'PASS', 'CSQ=C|ENSG00000223972|ENST00000456328|Transcript|non_coding_transcript_exon_variant&non_coding_transcript_variant|620||||||1||1|DDX11L1|HGNC|37102|processed_transcript|YES||||||||3/3|||ENST00000456328.2:n.620G>C|||||||||||||||||||,C|ENSG00000223972|ENST00000450305|Transcript|splice_region_variant&non_coding_transcript_exon_variant&non_coding_transcript_variant|412||||||1||1|DDX11L1|HGNC|37102|transcribed_unprocessed_pseudogene|||||||||5/6|||ENST00000450305.2:n.412G>C|||||||||||||||||||,C|ENSG00000223972|ENST00000515242|Transcript|non_coding_transcript_exon_variant&non_coding_transcript_variant|613||||||1||1|DDX11L1|HGNC|37102|transcribed_unprocessed_pseudogene|||||||||3/3|||ENST00000515242.2:n.613G>C|||||||||||||||||||,C|ENSG00000223972|ENST00000518655|Transcript|intron_variant&non_coding_transcript_variant|||||||1||1|DDX11L1|HGNC|37102|transcribed_unprocessed_pseudogene||||||||||2/3||ENST00000518655.2:n.482-31G>C|||||||||||||||||||,C||ENSR00000528767|RegulatoryFeature|regulatory_region_variant|||||||1||||||regulatory_region|||||||||||||||||||||||||||||||']

我怎样才能得到这样的列表:

list = ['1', '13372', '.', 'G', 'C', '608.91', 'PASS', 'CSQ=C', 'ENSG00000223972', 'ENST00000456328', 'Transcript', 'non_coding_transcript_exon_variant&non_coding_transcript_variant', '620', ........etc....]

【问题讨论】:

  • 你可以使用你最喜欢的文本编辑器。
  • 很遗憾,整个文件有 20GB,我的文本编辑器无法处理
  • 以下答案有帮助吗?如果是这样,请考虑accepting(左侧的绿色勾号),或要求澄清。

标签: python string python-2.7 list


【解决方案1】:

一种方法是将itertools.chainstr.split 一起使用。您可以使用filter 删除空字符串。

from itertools import chain

res = list(filter(None, chain.from_iterable(i.split('|') for i in lst)))

请注意,我已将输入命名为 lst。永远不要在内置变量之后命名变量。

【讨论】:

  • 次要观点:对于 Python 2.x,您不需要 list 调用,并不是说它真的很痛。
猜你喜欢
  • 2013-02-27
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 2017-08-11
  • 2018-06-18
相关资源
最近更新 更多