2017-10-15 1 views
-1

Ich habe Zweifel bezüglich der folgenden Code.Python: For-Schleife zum Lesen einer Textdatei wird nicht ordnungsgemäß für alle Textdatei Datensätze ausgeführt

Ich versuche, eine TXT-Datei als eine Eingabe zu übernehmen, die die Daten wie unten

aaaaaaaaaa 
bbbbbbbbbb 
cccccccccc 

haben und es an die searchForJob Funktion übergeben eine Suche in verschiedenen Datei auszuführen, aber meine for-Schleife der Eingabedatei Wird nicht richtig ausgeführt, werden nicht alle drei Zeilen der Eingabedatei genommen. Es wird nur die zweite Zeile (bbbbbbbb) oder die dritte Zeile (ccccccccc) ausgewählt. Kann jemand mir dabei helfen? Ich bin neu in der Python-Sprache.

def searchForJob(job): 
    with open('some location/Jls.txt',"U") as lines: 
     for line in lines: 
      if line.find(job)!=-1: 
       print(job + ' : Found') 
       break; 

    return 




jobNames = open('some location/JNames.txt') 
try: 
    for job in jobNames: 
     print(job) 
     searchForJob(job) 
finally: 
    jobNames.close() 
+0

Was ist das "U" im zweiten Argument tun soll von 'offen' in' searchForJob'? Ich würde erwarten, dass dies ein Modus ist. –

+0

'U' ist vielleicht neue Zeilen in der TXT-Datei zu sehen –

+0

Sie möchten aaaaa bbbbbb cccc in mehreren Textdateien suchen? – DRPK

Antwort

0

Verwenden Sie beim Lesen einer Datei den Modus r.

Jede Zeile hat eine nachlaufende \n, so müssen Sie strip() ihnen. Verwenden Sie die Funktion repr(...), damit Sie die nachgestellten Leerzeichen sehen können.

Verwendung Sprache Python Funktionen wie die with statement, die in keyword

Folgen Sie der PEP 8 Style Guide.

def search_for_job(job): 
    with open('j.txt', 'r') as f: 
     for line in f: 
      if job in line: 
       print(repr(job) + ' : Found in ' + repr(line)) 
       break 


with open('n.txt', 'r') as job_names: 
    for job in job_names: 
     job = job.strip() 
     print('Searching for job ' + repr(job)) 
     search_for_job(job) 

j.txt

job 1, name 2... 
job 2, name 1... 
job 3, nothing 

n.txt

name 1 
name 2 
name 3 

Beispielausgabe:

$ python3 read.py 
Searching for job 'name 1' 
'name 1' : Found in 'job 2, name 1...\n' 
Searching for job 'name 2' 
'name 2' : Found in 'job 1, name 2...\n' 
Searching for job 'name 3' 
+0

Ich bekomme immer noch die gleiche Ausgabe. das gleiche Problem wieder auftreten :( –

+0

@AmritpalsinghThethi Haben Sie nach der Endung '\ n \ neue Zeile Zeichen? – LYF

+0

Thnx viel :) ...... es funktionierte perfekt jetzt –