Как найти несколько строк в тексте и посчитать количество найденных строк? - PullRequest
0 голосов
/ 09 июля 2019

У меня есть список строк и текстовый файл. Список состоит из строк, содержащих 1 токен, и других строк, содержащих более 1, поскольку они являются собственными существительными. Это выглядит так: ['ana e joao', 'fab g. ruggeri ',' resende ',' Ana e Joao '].

с моим кодом я нахожу строки в текстовом файле, но я не знаю, как подсчитать частоту появления каждой найденной строки.

Я пытался сохранить строки в файле, разделенном ',' прочитать файл и разделить на ','. Я также читаю файл и пытаюсь сопоставить все строки в текстовом файле одновременно, но мне нужно посчитать, сколько раз каждая строка встречается в текстовом файле. Смотрите код ниже:

def proper_nouns():
    with open('/Users/proper_nouns.txt','r', encoding="utf-8") as 
p:
        pn = p.read()
        s=pn.split(',')


    while True:
        try:
            f =Path(input("\Enter your file path : "))
            with open(f,'r', encoding="utf-8") as fi:
                wds = fi.read()
                break
        except FileNotFoundError:
            print("\nTry again")

    propn_found=[y for y in s if x in wds]



    print(propn_found)

def proper_nouns()

Я хочу найти все эти строки в текстовом файле одновременно, посчитать частоту появления каждой строки в текстовом файле и распечатать их как:

"Ана" 2 "Ана и Жуан" 3 "Резенди" 4

и так далее ...

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Вы можете применять диктет для создания словаря с необходимыми данными:

text = "some random text apple, some text ginger, some other blob data"
words = "some", "text", "blob"
result = {word: text.count(word) for word in words}

Вывод:

{'some': 3, 'text': 2, 'blob': 1}

Upd.

Для решения проблемы с распознаванием слов я рекомендую использовать регулярное выражение:

import re
...
result = {word: re.subn(r"\b{}\b".format(word), "", text)[1] for word in words}
0 голосов
/ 09 июля 2019

Если вы хотите сделать это вручную без каких-либо библиотек и перебирать текст, это должно работать:

def proper_nouns():

    wordsfilepath = '/Users/proper_nouns.txt'
    textfilepath = '/Users/text.txt'
    with open(wordsfilepath,'r', encoding="utf-8") as p:
        words = p.read()
        words = words.split(',')
    with open(textfilepath, 'r', encoding="utf-8") as textfile:
        searchtext = textfile.read()
        searchtext = searchtext.strip()
    wordDict = {}
    for word in searchtext:
        try:
              wordDict[word] = wordDict[word]+1
        except IndexError:
              wordDict[word] = 1
    for word in wordDict:
        print(f"{word}, wordDict[word]
...