Уведомления

Группа в Telegram: @pythonsu

#1 Май 22, 2014 16:10:21

maks_dem
Зарегистрирован: 2014-05-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите учащему английский язык

Доброго времени суток! Я учу анг. язык и при переводе текста мне понадобилось узнать с какой частотой повторяется слова в текст, что бы выявить для себя наименее употребляемые.
Есть текст, в тексте нужно подсчитать сколько раз повторяеться каждое слово самого текста
Моя логика программы:
Открываю файл
Начинаю считывать буквы до «не букв»(точка, пробел, перевод на новую строку, табуляция…)
Когда достигнут «не буквы» записываю свое первое слово в переменную
Начинаю искать это слово в тесте
Когда нахожу идентичное слово, устанавлюю +1 к этому слову.
Когда достигнут конец файла, начинаю считывать новое слово с места где закончил + 1 символ(на этом месте где остановился находится «не буква»).
Цикл повторяется пока не достигну конца файла.
Потом вывожу результаты:
Hello – 3
My – 15
I -35
Are- 56

И т.д.
Обращался к ребятам на PHP форум, там мне не помогли, сам я не программист. Очень надеюсь на Вашу добрую питонскую сердечность))

Офлайн

#2 Май 22, 2014 17:33:39

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Помогите учащему английский язык

Если os unix - то вообще нет проблем:
http://ru.wikipedia.org/wiki/Wc

http://stackoverflow.com/questions/187455/counting-array-elements-in-python

>>> from collections import Counter
>>> words = "apple banana apple strawberry banana lemon"
>>> freqs = Counter(words.split())
>>> print(freqs)
Counter({'apple': 2, 'banana': 2, 'strawberry': 1, 'lemon': 1})
т.е.
гугл вам легко поможет. это первые ссылки.



Отредактировано doza_and (Май 23, 2014 07:06:34)

Офлайн

#3 Май 22, 2014 23:20:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9731
Репутация: +  843  -
Профиль   Отправить e-mail  

Помогите учащему английский язык

doza_and
Если os unix - то вообще нет проблем:
wc посчитает любые слова, не различая их
Там можно через чистый bash (с ограничением целой переменной, там они маленькие), можно через чистый awk, а можно через смесь какую-нибудь (если в учебных целях).

maks_dem
Обращался к ребятам на PHP форум, там мне не помогли
В php есть ассоциативный массив.

maks_dem
Моя логика программы:
Типа того
>>> s = 'aa bb aa bb cc'
>>> 
>>> d = {}
>>> for w in s.split():
...     d[w] = d.get(w, 0) + 1
... 
>>> d
{'cc': 1, 'bb': 2, 'aa': 2}
>>>

А вообще, есть re.findall(), ею можно искать слова более точно.



Отредактировано py.user.next (Май 22, 2014 23:24:06)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version