2017-09-21 4 views
0

Ich möchte nur Zeile für Zeile aus einer Datei lesen und jede Zeile an ein Array anhängen. Ich habe es vorher ohne Probleme gemacht und ich weiß nicht wieso es diesmal nicht geht! Die Druckfunktion zeigt nur die erste Zeile der Datei an !! Hier ist mein Code:Die Druckfunktion zeigt nur die erste Zeile der Datei

keyword_array = []  
with open('local directory\\C0577785c.txt') as my_keywordfile: 
     for keyword in my_keywordfile.readline().strip("[]").strip("'").split(","): 
     keyword_array.append(keyword.strip().strip("'").lower()) 
     print(keyword_array) 

Auch ist hier eine Teilmenge der Dateiinhalt:

C0001396 adam attack stokes 
C0001396 Adam Stokes Attacks 
C0001396 Adam-Stokes Attacks 
C0001396 adam-stokes syndrome 
C0001396 adams attack stoke 
C0001396 adams stoke syndrome 
C0001396 adams stokes attack 
C0001396 ADAMS STOKES SYNDROME 
C0001396 Adams-Stokes 
C0001396 Adams-Stokes Syndrome 
C0001396 Adams-Stokes; attack 
C0001396 attack; Adams-Stokes 
C0001396 attack; Stokes-Adams 
C0001396 Attacks, Adam-Stokes 
C0001396 Attacks, Stokes-Adams 
C0001396 morgagni's disease 
C0001396 Morgagni-Adam's Stokes syndrome 
C0001396 Morgagni-Stokes-Adams 

Danke,

Antwort

1

Verwenden Sie eine verschachtelte Schleife, um die Zeilen von my_keywordfile zu lesen.

for line in my_keywordfile.readlines(): 
    for keyword in line.strip("[]").strip("'").split(","): 
+0

Danke @ ID0. Genau das musste ich eingeben. – NinaDev

0

Sie rufen nur Readline-() einmal, so dass nur eine Zeile gedruckt.

0

In Ihrer for-Schleife möchten Sie .readlines() für das Dateiobjekt aufrufen. Nicht readline(). readline() gibt nur die erste Zeile zurück, und readlines() gibt eine Liste von Zeilen zurück, über die Sie iterieren können.

Aus der Dokumentation:

readlines(...) method of _io.TextIOWrapper instance 
    Return a list of lines from the stream. 

    hint can be specified to control the number of lines read: no more 
    lines will be read if the total size (in bytes/characters) of all 
    lines so far exceeds hint. 

ich auch bei der for-Schleife Erklärung die Zeile empfehlen nicht desinfizierende würde. Es scheint, dass es ein wenig einfacher liest, wenn Sie das innerhalb der for-Schleife machen.

# .... 
with open('myfile.txt', 'r') as my_file: 
    for raw_line in my_file.readlines(): 
     cleaned_data = raw_line.lower().strip("'") 
     #.... 
+0

Dank @Kyle. Aber ich bekomme diesen Fehler: 'Liste' Objekt hat kein Attribut 'Streifen' – NinaDev

+0

readlines() gibt eine Liste zurück und Sie versuchen, .strip() auf einer Liste aufzurufen, die nicht funktionieren wird. Ich werde meine Antwort hier aktualisieren. – Kyle

Verwandte Themen