Mam serię wejścia plików, takich jak:linie rozdzielające z "z INFILE w python
chr1 hg19_refFlat exon 44160380 44160565 0.000000 + . gene_id "KDM4A"; transcript_id "KDM4A";
chr1 hg19_refFlat exon 19563636 19563732 0.000000 - . gene_id "EMC1"; transcript_id "EMC1";
chr1 hg19_refFlat exon 52870219 52870551 0.000000 + . gene_id "PRPF38A"; transcript_id "PRPF38A";
chr1 hg19_refFlat exon 53373540 53373626 0.000000 - . gene_id "ECHDC2"; transcript_id "ECHDC2_dup2";
chr1 hg19_refFlat exon 11839859 11840067 0.000000 + . gene_id "C1orf167"; transcript_id "C1orf167";
chr1 hg19_refFlat exon 29037032 29037154 0.000000 + . gene_id "GMEB1"; transcript_id "GMEB1";
chr1 hg19_refFlat exon 103356007 103356060 0.000000 - . gene_id "COL11A1"; transcript_id "COL11A1";
w moim kodu Próbuję uchwycić 2 elementy z każdej linii, pierwszy to numer po którym mówi eksonu, drugi gen (numer i się combo otoczony „”, na przykład „KDM4A” Oto mój kod.
with open(infile,'r') as r:
start = set([line.strip().split()[3] for line in r])
genes = set([line.split('"')[1] for line in r])
print len(start)
print len(genes)
jakiegoś początku powód działa dobrze, ale geny niczego nie robienia. Oto wynik:
48050
0
ja figura to jest coś zrobić z „” otaczającej nazwy genów ale jeśli wejdę to na terminalu działa dobrze:
>>> x = 'A b P "G" m'
>>> x
'A b P "G" m'
>>> x.split('"')[1]
'G'
>>>
Wszelkie rozwiązania będą mile widziane? Nawet jeśli jest to zupełnie inny sposób przechwytywania 2 elementów danych z każdej linii. Dzięki
Ok, więc co należy OP zrobić? – Kevin
@Kevin edytowane dzięki – The6thSense
dzięki, nie natknąłem się na metodę wyszukiwania wcześniej, bardzo przydatne. Akceptuję tę odpowiedź, ponieważ jest ona najkrótsza i najbardziej zwięzła oraz rozwiązuje problem z 1 krótką linią kodu – user3062260