У меня есть файл журнала сервера, связанный hereсоздания надлежащего вывода TSV из словаря словарей
моя цель состоит в том, чтобы найти «действительные» посещения сервера и написать краткие действительные домены верхнего уровня в выходной файл.
Выходной файл должен быть .tsv-файлом. Файл примера связан here
Я получил результаты моего регулярного выражения (которое определенно все еще нуждается в некоторой настройке) в словаре словарей, чтобы соответствовать желаемому результату. Моя проблема заключается в сортировке словарных клавиш в алфавитном порядке с помощью внутренних клавиш словаря (домены верхнего уровня), а затем делается то же самое для внешних ключей словаря (дата). Кроме того, я не уверен, как прокрасть символ «\ t» между каждой парой ключ/значение.
Я знаю, что словари unsortable, я просто с трудом двигающихся данных в формат сортируемого, а затем писать вывод в стиль, который соответствует примеру файл
Я включил мой код до сих пор ниже:
import re
fhandle=open("access_log.txt", "rU")
access_log=fhandle.readlines()
validfile=open("valid.tsv", "w")
invalidfile=open("invalid.tsv", "w")
valid_list=list()
valid_dict=dict()
invalid_list=list()
#write results into respective log files
for line in access_log:
valid=re.findall(r'(\d+/[a-zA-Z]+/\d+).*?(GET|POST)\s(http://|https://)([a-zA-Z]+)\.(\w+)\.((?<=com)\.[a-zA-Z]+|[a-zA-Z]+).*?(200)', line)
if valid:
date=valid[0][0]
domain=valid[0][5]
#writes results into 2d dcitonary (dictionary of dictonaries)
if date not in valid_dict:
valid_dict[date]={}
else:
if domain in valid_dict[date]:
valid_dict[date][domain]+=1
else:
valid_dict[date][domain]=1
else:
invalid_list.append(line)
for k,v in valid_dict.items():
valid_list.append([k,v])
for key in sorted(valid_dict.iterkeys()):
print key, valid_dict[key]
fhandle.close()
validfile.close()
invalidfile.close()
Это задание?Проверьте мой ответ на [этот вопрос] (https://stackoverflow.com/questions/21345254/sorting-and-organizing-a-dictionary/21345427#21345427) :) –
, к сожалению, да. Я нашел этот ответ в Интернете, но моя проблема заключалась в том, что я не совсем понял каждую строку кода. Я благодарен за этот пример, и я думаю, что я могу изучить, что делает каждый модуль, но я не хотел использовать понятия, которые я не понимал. Независимо от того, спасибо за помощь – Mike