Je vais supposer que votre fichier journal est formaté comme
session 321: abc de
567 89 abd ec
session 12345: ghi lm
763 98 dba ce
et que ce que vous voulez faire est de trouver la session appropriée et toutes les lignes suivantes jusqu'à ce que vous voyez une ligne vide.
import collections
import re
sessionData = collections.defaultdict(list)
lookfor = [12345, 13981]
newSession = re.compile(r'session (\d+):')
with open('my_log_file.txt', 'r') as inf:
session = None
for ln in inf:
ln = ln.rstrip()
if len(ln):
match = newSession.match(ln)
if match:
s = int(match.group(0))
if s in lookfor:
session = s
if session:
print ln
sessionData[session].append(ln)
else:
session = None
sessionData est maintenant un dict de clé de session; pour chaque session, il contient une liste de toutes les lignes connexes. En utilisant les exemples de données ci-dessus, sessionData ressemblera à
{ 12345: ["session 12345: ghi lm", " 763 98 dba ce"] }
"imprime toutes les lignes après cela jusqu'à rencontrer la nouvelle ligne" - il semblera que ce ne sera que 1 ligne. Soyez plus précis s'il vous plaît. Votre question est trop générale. – Elalfer
C'est assez simple à écrire, mais les détails seront dominés par votre format de fichier - qu'est-ce que c'est? En outre, "imprimer toutes les lignes ... jusqu'à rencontrer une nouvelle ligne" n'a pas de sens, car toutes les lignes se terminent par un saut de ligne. Qu'avez-vous vraiment voulu dire? – payne
Un peu hors sujet, mais comment avez-vous obtenu cet ID utilisateur. "user589837" – Neo