как разобрать текст - PullRequest
       5

как разобрать текст

0 голосов
/ 29 января 2011

У меня есть вопрос, что я хочу прочитать файл, найти любую строку с идентификатором сеанса (например, 12345), при совпадении затем вывести все строки после этого, пока не встретится символ новой строки. после этого, как я могу связать все эти строки с идентификатором сеанса, если мне нужно для дальнейшего анализа этих строк. И я хочу сделать это на Python.

Спасибо

Ответы [ 2 ]

3 голосов
/ 29 января 2011

это ответит на первую часть вашего вопроса:

with open('myfile.txt') as f:
    for line in f:
        if '12456' in line:
            print line

Я не понял, о чем вы еще просили.Можете ли вы перевести: «Как я могу связать все эти строки с идентификатором сеанса, если мне нужно дополнительно проанализировать эти строки»?

2 голосов
/ 29 января 2011

Я предполагаю, что ваш файл журнала отформатирован как

session 321: abc de
    567 89 abd ec

session 12345: ghi lm
    763 98 dba ce

и что вы хотите сделать, это найти соответствующий сеанс и все последующие строки, пока не увидите пустую строку.

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 теперь является ключом сеанса;для каждого сеанса он содержит список всех связанных строк.Используя приведенные выше примеры данных, sessionData будет выглядеть как

{ 12345: ["session 12345: ghi lm", "    763 98 dba ce"] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...