2017-02-17 11 views
-2

В настоящий момент мой код извлекает данные из PDF &, подсчитывая частоту слова. Я уже некоторое время пытался организовать его в порядке частоты, но не смог. Я просмотрел несколько похожих ответов, но не могу найти ответ, который я могу получить для работы. Может кто-то указать, что мне нужно делать?Где я иду не так?

import PyPDF2 
import re 


pdfFileObj = open('ch8.pdf', 'rb') #Open the File 
pdfReader = PyPDF2.PdfFileReader(pdfFileObj) #Read the file 
frequency = {} #Create dict 

print "Number of Pages %s " % pdfReader.numPages #Print Num Pages 

pageObj = pdfReader.getPage(0) # Get the first page 
match_pattern = re.findall(r'\b[a-z]{3,15}\b', pageObj.extractText()) #Find the text 

for word in match_pattern: #Start counting the frequency 
    word = word.lower() 
    count = frequency.get(word,0) 
    frequency[word] = count + 1 


frequency_list = frequency.keys() 

for words in frequency_list: 
    print words, frequency[words] 

Thanks in Advance.

+1

Вы пытались использовать 'Counter'? Вы можете запустить счетчик на нем, а затем отсортировать по 'most_common'. Вот информация о нем: https://docs.python.org/2.7/library/collections.html#collections.Counter.most_common – serk

+0

Ленивый заголовок (может быть использован для каждого вопроса на SO!), Ленивый вопрос. Основные способы устранения неполадок: начните с самого простого ввода, посмотрите, что делает с этим код. Если вы все еще не можете понять, что происходит, укажите свой вклад, свой результат, какой результат вы ожидали, что вы пробовали и что произошло, когда вы его попробовали. –

ответ

0

Глядя на ваш Python, логически все выглядит хорошо и синтаксически. Я бы предположил, что что-то не так с вашим методом извлечения, потому что я пробовал этот код с несколькими незначительными изменениями в pdf-формате из 4-х слов, и ни один из них не был очищен. У меня нет опыта работы с pyPDF2, поэтому я не могу предложить гораздо больше советов, чем идея о том, что вы должны попробовать другой метод извлечения текста, если это возможно.