2013-11-18 2 views
2

Я сейчас пытаюсь привыкнуть к Python и недавно ударил блок в своей кодировке. Я не мог запустить код, который бы подсчитал количество раз, когда фраза появляется в html-файле. Недавно я получил некоторую помощь в создании кода для подсчета частоты в текстовом файле, но мне интересно, есть ли способ сделать это непосредственно из html-файла (чтобы обойти альтернативу копирования и вставки). Любые советы будут искренне оценены. Предыдущее кодирование я использовал следующее:Подсчет частот фраз в html-файле

#!/bin/env python 3.3.2 
import collections 
import re 

# Defining a function named "findWords". 
def findWords(filepath): 
    with open(filepath) as infile: 
    for line in infile: 
     words = re.findall('\w+', line.lower()) 
     yield from words 

phcnt = collections.Counter() 

from itertools import tee 
phrases = {'central bank', 'high inflation'} 
fw1, fw2 = tee(findWords('02.2003.BenBernanke.txt')) 
next(fw2) 
for w1,w2 in zip(fw1, fw2): 
    phrase = ' '.join([w1, w2]) 
    if phrase in phrases: 
    phcnt[phrase] += 1 

print(phcnt) 
+0

Вы можете использовать 'collections.Counter' –

+1

@Ashish Нитин Патил: К сожалению, это только дает мне возможность рассчитывать на слова, а не фразы – Raul

ответ

1

Вы можете использовать some_str.count функции (some_phrase)

In [19]: txt = 'Text mining, also referred to as text data mining, Text mining,\ 
     also referred to as text data mining,' 
In [20]: txt.lower().count('data mining') 
Out[20]: 2 
+0

Эй, человек, оригинальный код, который я написал, работает в текстовых файлах, но мне интересно, как использовать его непосредственно в html-файле. – Raul

0

насчет просто зачисток HTML-тегов, прежде чем делать анализ? html2text выполняет эту работу достаточно хорошо.

import html2text 
content = html2text.html2text(infile.read()) 

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

h = html2text.HTML2Text() 
h.ignore_images = True 
h.ignore_links = True 
content = h.handle(infile.read())