Я прочитал некоторую информацию о разборе файлов в Python, но для меня сейчас не совсем ясно, поэтому мне нужна помощь.Анализ файлов в Python
У меня есть файл журнала со строками, который имеет определенные маркеры как WARNING, DEBUG и т. Д. И я хочу поместить все их в разные списки, чтобы работать с ними позже. Так как я понимаю, мне нужно использовать regexp для этого. Код, который у меня есть прямо сейчас.
Часть кода, который поможет вам понять, где и что я хочу поставить:
message = ('CRITICAL', 'ERROR', 'WARNING', 'INFO', 'DEBUG', 'AUDIT', 'TRACE')
crit, err, warn, info, deb, aud, tra = [], [], [], [], [], [], []
error = (crit, err, warn, info, deb, aud, tra)
Вот анализатор кода:
with open(log, 'r+') as f:
lines = f.readlines()
for line in lines:
for i in range(len(message)):
match = re.search(message[i], line)
if match:
new_line = match.group()
error[i].append(new_line)
Так линия «для линии в линии» само по себе захватывает отлично, но когда я забираю «для i в диапазоне (len (message)):« и попробуйте распечатать совпадение - он дает мне объект, а new_line добавляет только слово «WARNING» и т. д. Так что не вся строка, но мне это нужно без каких-либо разрезов.
Заранее благодарен!
Если вам нужна целая строка, почему бы вам не использовать 'new_line = line' вместо' match.group() '? –
Да, я понял. Мне нужно изменить поведение на этот: для строк в строках: для i в диапазоне (len (сообщение)): if re.search (message [i], line): error [i] .append (line) – Valentyn
Если вы просто хотите проверить, можно ли найти 'message [i]' из 'line', это может быть сделано с помощью' if message [i] в строке: 'без использования regex – niemmi