3

 avatar
unknown
abc
4 years ago
1.0 kB
5
Indexable
import re

def word_stat(filename):
    '''
    
    Zwraca posortowaną malejąco statystykę wystąpień słów
    w pliku w postaci listy par (słowo, liczba).
    '''
    wordset = set()
    listofwords = []
    f = open(filename,'r')        
    lines = f.readlines() 
    
    for line in lines:
        words = _words_from_line(line)
        for word in words:
            wordset.add(word)
            listofwords.append(word)
    values = [listofwords.count(x) for x in wordset]
    d = dict(zip(wordset, values)) # słownik (klucz:wartość)
    d.items()
   #print(_sort_stat(d.items()))
    return _sort_stat(d.items())
    

def _words_from_line(line):
    "Zwraca listę słów dla linijki tekstu unicode."
    words = re.split('[\W\d]+', line)
    return [w.lower() for w in words if w]

def _sort_stat(stat):
    "Sortuje malejąco listę par według drugiego elementu."
    return sorted(stat, key=lambda p: p[1], reverse=True)

word_stat('wiki_small.txt')
Editor is loading...