2016-12-22 7 views
0

Ich sage dir mein Problem. Eine Tabelle wie folgt aus:Ersetzen und spalten Linie

gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium] 
    gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor 
    gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio] 
    gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus] 

Als ich line.split (‚|‘) machen das letzte Rohr zu trennen ‚|‘, einige Linie den leeren Raum nicht nur nach, und am Ende haben kann ich nicht erhalten ein klarer Tisch. Zum Beispiel:

gi | 614110824 | sp | P9WIB2.1 | PHLB_MYCTO RecName: Voll = Phospholipase C 2; Flags: Precursor

Ich möchte das letzte '|' ersetzen nach '\ t' und nach der Teilung durch '\ t'. Mit der obigen Zeile kann ich nicht alle Zeilen an der Position teilen, die ich möchte.

for g in file: 
    name = g.replace('| ', '|\t'). 

Streifen() split ('\ t')

Wenn ich zum ersten Mal durch gespalten. '|' Wie kann ich diese Zeile korrigieren, um die vierte Umrandung durch ein '| und nach dem Split?

Vielen Dank im Voraus.

+1

können Sie das gewünschte Ergebnis posten? –

+0

Warum teilen Sie auf ''| ''anstelle von'' | ''? Verwenden Sie '|' ohne Leerzeichen und verwenden Sie -1. Element der Liste. – Fejs

Antwort

2
text = 'gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]' 
text.rsplit('|',1) 

aus:

['gi|494115682|ref|WP_007055464.1', 
' MULTISPECIES: dephospho-CoA kinase [Bifidobacterium]'] 

str.rsplit (sep = None, maxsplit = -1)

Zurück eine Liste der Wörter in der Zeichenfolge, sep wie die Verwendung von Trennzeichenfolge. Wenn maxsplit angegeben wird, werden bei die meisten maxsplit-Splits ausgeführt, die rechten. Wenn sep nicht oder None angegeben ist, ist jede Whitespace-Zeichenfolge ein Trennzeichen.

1

Ich vermute, Sie tatsächlich das csv-Modul wollen:

import io 
import csv 

file = io.StringIO(''' 
gi|494115682|ref|WP_007055464.1| MULTISPECIES: dephospho-CoA kinase [Bifidobacterium] 
gi|614110824|sp|P9WIB2.1|PHLB_MYCTO RecName: Full=Phospholipase C 2; Flags: Precursor 
gi|446269943|ref|WP_000347798.1| MULTISPECIES: amino acid ABC transporter permease [Vibrio] 
gi|446561267|ref|WP_000638613.1| acetyltransferase [Staphylococcus aureus] 
'''.strip()) 

reader = csv.reader(file, delimiter='|') 
for row in reader: 
    print(row) # or print('\t'.join(row)) 
Verwandte Themen