Je dois lire une ligne de fichier par ligne mais commencer à imprimer son concours après une correspondance. Supposons que la correspondance doit être xxx
de sorte que si nous avons un fichier avec le suivant p> il doit afficher DWDM et 111 p> J'ai essayé C'est la voie suivante. P> mais il n'imprime qu'une seule ligne. Comment forcer à imprimer le reste? P> p>
3 Réponses :
IT Impression de la ligne correspondante, qui est normale. Essayez quelque chose comme ça: Pourquoi préférer l'utilisation de
avec code> à Ouvrez un fichier p>
blockQuote> p>
Remarque Ceci imprimera la ligne xxx code> qui n'était pas souhaitée dans la sortie de l'OP. Il utilise également re.search code> qui comme importation inutile pour une recherche code> trivial code>. Cela étant dit que nous avions tous les deux la même idée: P
Vous avez raison sur l'ordre des opérations, corrigé
Cependant, l'utilisation de re code>, même s'il semble trivial dans l'exemple, pourrait être nécessaire pour le cas d'utilisation réelle, par exemple si le fichier est un fichier journal avec dates ...
1) N'utilisez pas Regex pour une recherche simple.
2) Ouvrez le fichier dans un avec code> instruction.
3) Créez simplement une variable booléenne pour vous indiquer quand vous voyez la ligne souhaitée: with open('buffer.txt', 'r') as f:
start_printing = False
for line in f.readlines():
if start_printing:
print(line)
elif 'XXX' in line:
start_printing = True
file = open('buffer.txt', 'r')
found = False
for line in file:
if not found:
if re.search('XXX'. line):
found = True
else:
print(line)