Поиск в текстовом файле по нескольким условиям списка и количество выводов /% / слов - PullRequest
1 голос
/ 16 мая 2019

Я пытаюсь найти в заданном файле .txt (имя_файла_источника) ряд терминов списка и предоставить вывод их количества,% от этих терминов в файле .txt и точные слова для каждого набора найденных перечисленных терминов.в тексте.

Как настроить функцию учета / отчетности?


#build GUI for text file selection
import PySimpleGUI as sg      
window_rows = [[sg.Text('Please select a .txt file for analysis')],      
                 [sg.InputText(), sg.FileBrowse()],      
                 [sg.Submit(), sg.Cancel()]]      
window = sg.Window('Cool Tool Name', window_rows)    
event, values = window.Read()    
window.Close()
source_filename = values[0]    

#written communication term list
dwrit = ('write','written','writing', 'email', 'memo')
written = dwrit

#oral communication term list
doral = ('oral','spoken','talk','speech,')
oral = doral 

#visual communication term list
dvis = ('visual','sight') 
visual = dvis

#auditory communication term list
daud = ('hear', 'hearing', 'heard')
auditory = daud

#multimodal communication term list
dmm = ('multimodal','multi-modal','mixed media','audio and visual')
multimodal = dmm

#define all term lists 
communication = (dwrit, doral, dvis, daud, dmm)

#search lists
from collections import Counter
with open(source_filename, encoding = 'ISO-8859-1') as f:
     for line in f:
         Counter.update(line.lower().split())
print(Counter(communication))

Проблема в том, Я распечатываю все термины в всех списках прямо сейчас, но я нефактически ищет в документе просто для перечисленных терминов и игнорирует все остальные термины ...

Идеальный результат будет выглядеть так:

Написано: [число,%, слова]

Устный: [число,%, слова]

Визуальный: [число,%, слова]

Аудитория: [число,%, слова]

Мультимодальный: [число,%, слова]

1 Ответ

0 голосов
/ 16 мая 2019

Счетчик - это словарь, который отключен от того, что вы считаете. Вот почему вы видите каждое отдельное слово, а не просто ищите слова (как ключи в счетчике), которые соответствуют интересующим вас словам. Ниже приведен пример того, как вы можете выполнить один из пунктов, это шаблон, который вы можете использовать для создания других списков.

Попробуйте это:

from collections import Counter
c = Counter()
#search lists
with open(source_filename, encoding = 'ISO-8859-1') as f:
    for line in f:
        c.update(line.lower().split())
written_words = len([x for x in written if x in c.keys()])
print(f'Written: [{written_words}, {written_words/len(c.keys())} %]')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...