2017-04-12 2 views
0

Ich möchte eine Eingabedatei lesen, die das Format hat:Split durch Komma, Newline und Carriage Return

[ '1,2,3 \ r \ n', '4,5,6' ]

ich mag, dass sie getrennt werden, so dass es wie

[ '1' aussehen wird, '2', '3', '4', '5', '6']

Mein Code sieht aus wie

def importFile(file): 
with open(file) as f: 
    content = f.readlines() 
    print content 
    for line in content: 
     tempList = line.split(',') 
    print tempList 

Leider, was ich gerade jetzt bekommen ist

[ '4', '5', '6']

Wo ich tat falsch machen? Kann mir jemand helfen?

+1

Sie überschreiben den Inhalt von 'tempList' innerhalb dieser' for' Schleife, so dass Sie nur den Inhalt der letzten Iteration haben. – mrogers

+0

@mrogers Ich habe ein paar kleine Änderungen vorgenommen, aber jetzt bekomme ich '[[1,2,3 \ r \ n '], [' 4,5,6 ']]'. Was soll ich als nächstes tun? – ThomasWest

Antwort

1

Um meinen Kommentar zu wiederholen: Das Problem ist, dass Sie tempList bei jeder Iteration der for Schleife (jede Zeile der Datei) überschreiben. Unten ist eine Möglichkeit, wie Sie das Problem lösen können. Ich lieh mir die Regex, um Ziffern aus Ihren Zeilen zu ziehen, um die \r\n von Python: Extract numbers from a string loszuwerden. Der Kern dieser Lösung ist die zweite for Schleife, die über den Inhalt jeder Zeile iteriert.

import re 

def importFile(file): 
    with open(file) as f: 
     content = f.readlines() 
     print content 
     result = [] 
     for line in content: 
      tempList = line.split(',') 
      for x in tempList: 
       result.append(re.findall(r'\d+', x)[0]) 
     print result 
+0

Ich sehe, also es stellt sich heraus, ich brauche nur einen Platz, um das Split-Ergebnis direkt zu speichern. Vielen Dank. – ThomasWest

+0

Ich bin sicher, dass Sie mit anderen Lösungen kreativer werden können. Dies ist nur die erste, die mir in den Sinn kam. – mrogers

Verwandte Themen