Поиск ключа Python Dict против значения счетчика в большом пространстве

Я ищу эффективный способ сканирования огромного файла журнала на предмет определенных строк и создания счетчика для каждой найденной строки. Я хочу написать этот метод, чтобы его можно было легко расширить в будущем. Я изучил defaultdict(int), но нашел только примеры для подсчета всех слов в строке. существовать

Чтобы усложнить задачу, я хочу использовать метод dict Key:[List], где Key будет строкой поиска и одним из списка, поэтому я могу добавить некоторые учетные данные к каждому ключу, чтобы я мог это сделать позже, поэтому что его можно легко расширить без необходимости внесения изменений в сценарий. существовать

Нравиться. . . существовать

mycounterdict = {'Mondeo':['Total Fords', 0, 'Belgium'], 'Passat':['Total VWs',0, 'Germany'], 'A4':['Total Audis', 0, 'Germany']}

Приложение, которое я использую для чтения журналов, структурировано таким образом, что сценарию передаются полные «группы данных» (в данном случае «CARinfo», хотя они перемешаны с другими «группами данных»). существовать

Пример визуализации типичного журнала (примечание: пунктирными линиями очерчен блок текста, передаваемый в скрипт каждый раз при обнаружении «CARinfo»). существовать

^{pr2}$

Затем мой сценарий сначала искал бы в большом журнале данных совпадение с группой данных «CARinfo», а затем искал совпадение по ключу в любом месте группы данных. Если я найду соответствующий ключ (например, mondeo), я хочу увеличить значение dict[1] (запись списка[1])

Я хотел бы сделать что-то подобное, но мне интересно, нужно ли мне полностью переосмыслить этот подход, который вначале был простым, но теперь кажется слишком сложным! существовать

path = C:\apath
for root, subFolders, files in os.walk(path):
    for filename in files:  
        if filename.endswith('.log'): 
            filenameext = filename.split(".log")
            f = root+'\\'+filename
            print "\tCurrently working on file: "+filename

            logtool.open_log(f)
            mygroup = logtool.app.DataGroup

            while (mygroup.Next()):
                if 'CARinfo' in mygroup.Text:
                    for k, v in mycounterdict:
                        if k in mypkt.Text:
                            v[1]+=1

            print mycounterdict

Guess you like

Origin blog.csdn.net/babyai996/article/details/131986903