Частота слов в те��сте
📁 исключение, python, вопрос, пример, работа
Ниже приведенный скрипт на Python подсчитывает частоту слов в тексте (непрерывных последовательностей букв за исключением знаков препинания) и выводит таблицу результатов.
Работает правильно. Вопрос вот в чем: можно ли сделать то же самое проще (например, меньше строк кода) на Python, Bash, PHP, Perl или это лучший способ?
import sysimport stringfile = open(sys.argv[1], ""r"")text = file.read()file.close()table = string.maketrans("""", """")words = text.lower().split(None)frequencies = {}for word in words: trimmed = word.translate(table, string.punctuation) frequencies[trimmed] = frequencies.get(trimmed, 0) + 1keys = sorted(frequencies.keys())for word in keys: print ""%-32s %d"" % (word, frequencies[word]) В вашем примере встречая подобную строку: ""aa,bb,cc"" она считается как ""aabbcc 1"", а должно быть: aa 1 bb 1 cc 1
Итак, мой вариант на Perl:
#!/usr/bin/perluse strict;my %result;while (<>) { $result{ lc $_ }++ for /(\w+)/g;}printf ""%-32s %d\n"", $_, $result{$_} for sort keys %result;можно его конечно скомпоновать и в одну строчку. но будет нечитаемо.
Войдите чтобы оставить ответ
Блоги