Я новичок в Python и уже являюсь поклонником этого языка. У меня есть программа, которая делает следующее:
Открывает текстовый файл, содержащий разделы текста, разделенные звездочками (
***
).Использует функцию
split()
для разделения этого текстового файла на разделы, разделенные этими звездочками. Линия звездочек одинаковая по всему текстовому файлу.Я хочу, чтобы мой код перебирал каждый из этих разделов и делал следующее:
У меня есть словарь с «ключевыми фразами», присвоенными значениям. Значение каждого ключа в словаре равно
0
.Код должен перебирать каждый раздел, созданный из разделения, и проверять, найдены ли ключи в словаре в каждом разделе. Если ключевой термин найден, значение для этого ключа увеличивается на 1.
После того, как код проходит через один раздел и подсчитывает, сколько ключей находится в разделе и соответственно добавляет значения, он должен распечатать словарные ключи и счетчики (значения) для этого параметра, установить значения на 0 и перейти к следующий раздел текста снова начинается с #3.
Мой код:
from bs4 import BeautifulSoup
import re
import time
import random
import glob, os
import string
termz = {'does not exceed' : 0, 'shall not exceed' : 0, 'not exceeding' : 0,
'do not exceed' : 0, 'not to exceed' : 0, 'shall at no time exceed' : 0,
'shall not be less than' : 0, 'not less than' : 0}
with open('Q:/hello/place/textfile.txt', 'r') as f:
sections = f.read().split('**************************************************')
for p in sections[1:]:
for eachKey in termz.keys():
if eachKey in p:
termz[eachKey] = termz.get(eachKey) + 1
print(termz)
#print(len(sections)) #there are thirty sections
#should be if code encounters ***** then it resets the counters and just moves on....
#so far only can count the phrases over the entire text file....
#GO BACK TO .SPLIT()
# termz = dict.fromkeys(termz,0) #resets the counter
Он выдает то, что считает, но это не первый, не последний и даже не весь отслеживаемый файл — я не знаю, что он делает.
Оператор печати в конце неуместен. Строка termz = dict.fromkeys(termz,0)
— это метод, который я нашел для сброса значений словаря в 0, но он закомментирован, потому что я не уверен, как к этому подойти. По сути, борьба со структурами управления Python. Если бы кто-то мог указать мне правильное направление, это было бы потрясающе.