J'y travaille depuis un bon moment et je n'ai trouvé aucun exemple sur ce site ou d'autres qui semblent pertinents. J'ai une liste, et ce que j'essaie de faire est assez simple je pense. J'ai juste besoin de chercher dans cette liste pour trouver le mot clé "Buffer Log". Une fois que j'ai trouvé ce mot-clé, je dois imprimer chaque ligne de cette ligne jusqu'à la fin de la liste. Toute direction serait très appréciée. Il semble que je sois assez proche.

logfile = open('logs.txt', 'r')
readlog = logfile.readlines()
logfile.close()

lines = []
for line in readlog:
    lines.append(line)


for x in lines:
    if "Log Buffer" in x:
       z =lines.index(x)
       print(lines[z:]
2
Garrett M. Williamson 15 mars 2019 à 00:32

2 réponses

Meilleure réponse

Vous n'avez pas besoin de la boucle for dans laquelle vous créez une liste de plus appelée lines.

Vous pouvez utiliser enumerate() pour garder une trace du numéro de ligne où vous vous trouvez, tout en recherchant la ligne qui contient 'Log Buffer'

Lorsque vous trouvez la ligne qui contient 'Log Buffer', n'oubliez pas ce numéro de ligne, quittez la boucle, puis imprimez toutes les lignes à partir du journal de lecture à partir de ce numéro de ligne.

logfile = open('logs.txt', 'r')
readlog = logfile.readlines()
logfile.close()

for i,x in enumerate(readlog):
    if 'Log Buffer' in x:
        z = i # Remember the value of i for which the line had 'Log Buffer'
        break # Exit the loop.

print (*readlog[z:])  # Move your print statement outside the loop.
1
fountainhead 14 mars 2019 à 22:34

Tout d'abord, le code:

lines = []
for line in readlog:
    lines.append(line)

Est inutile car le journal de lecture est déjà une liste. Vous pouvez essayer quelque chose dans le sens de ceci:

found = False
for line in readlog: # because this is already a list
    if "Log Buffer" in line:
        found = True # set our logic to start printing
    if found:
        print(line)
6
Reedinationer 14 mars 2019 à 21:35