Ilse
Ilse

Reputation: 11

Split a list in a list using delimiter

I have a list like this:

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|||||||||||||||||||||||||||||||']

How can I get a list like this:

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

Upvotes: 0

Views: 41

Answers (1)

jpp
jpp

Reputation: 164673

One way is to use itertools.chain with str.split. You can use filter to remove empty strings.

from itertools import chain

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

Note I have named the input lst. Never name a variable after a built-in.

Upvotes: 2

Related Questions