Как получить данные из файла
День добрый. Есть лог файл вида:
revno: 4
committer: user_Z
timestamp: Fri 2012-03-16 14:01:31 +0700
--
revno: 3
committer: user_Z
timestamp: Fri 2012-03-16 13:52:26 +0700
--
revno: 2
committer: user_Z
timestamp: Fri 2012-03-16 13:39:19 +0700
--
revno: 1
committer: user_Z
timestamp: Fri 2012-03-16 12:56:22 +0700
Как можно получить количество коммитов, с разбивкой по годам.
Ответы (1 шт):
Автор решения: MaxU
→ Ссылка
В текущей формулировке вопрос скорее похож на тех. задание, т.к. включает в себя несколько вопросов/задач.
Отвечу на первый "подвопрос" - как спарсить данные в удобную для дальнейшего анализа структуру данных:
import re
with open(filename) as f:
text = f.read()
data = re.findall(
r"revno:\s*([^\r\n]*).*?committer:\s*(\w+).*?timestamp:\s*\w{3}\s+(\d{4})-",
text,
flags=re.DOTALL
)
результат:
In [195]: data
Out[195]:
[('4', 'user_Z', '2012'),
('3', 'user_Z', '2012'),
('2', 'user_Z', '2012'),
('1', 'user_Z', '2012')]
Дальше нужно сгруппировать список кортежей по последнему и предпоследнему элементам и подсчитать количество записей в каждой группе. Перед группировкой список необходимо отсортировать по последнему и предпоследнему элементам кортежей.
Если возникнут вопросы/сложности с этим - откройте новый вопрос.