Avatar ·

Частота слов в те��сте

📁 исключение, 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])
Avatar ·

В вашем примере встречая подобную строку: ""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;

можно его конечно скомпоновать и в одну строчку. но будет нечитаемо.

Войдите чтобы оставить ответ

Блоги