Посмотри на программу word слова text word 3 print text print len word

Задача: написать программу, которая принимает текст и выводит два слова: наиболее часто встречающееся и самое длинное.

TEXT = """Однажды, в студёную зимнюю пору
Я из лесу вышел; был сильный мороз.
Гляжу, поднимается медленно в гору
Лошадка, везущая хворосту воз.
И, шествуя важно, в спокойствии чинном,
Лошадку ведёт под уздцы мужичок
В больших сапогах, в полушубке овчинном,
В больших рукавицах... а сам с ноготок!
«Здорово, парнище!» — «Ступай себе мимо!» —
«Уж больно ты грозен, как я погляжу!
Откуда дровишки?» — «Из лесу, вестимо,
Отец, слышишь, рубит, а я отвожу».
(В лесу раздавался топор дровосека.) —
«А что, у отца-то большая семья?» —
«Семья-то большая, да два человека
Всего мужиков-то: отец мой да я...» —
«Так вон оно что! А как звать тебя?» — «Власом». —
«А кой тебе годик?» — «Шестой миновал...
Ну, мёртвая!» — крикнул малюточка басом,
Рванул под уздцы и быстрей зашагал...
На эту картину так солнце светило,
Ребёнок был так уморительно мал,
Как будто всё это картонное было,
Как будто бы в детский театр я попал.
Но мальчик был мальчик живой, настоящий,
И дровни, и хворост, и пегонький конь,
И снег до окошек деревни лежащий,
И зимнего солнца холодный огонь —
Всё, всё настоящее русское было,
С клеймом нелюдимой, мертвящей зимы,
Что русской душе так мучительно мило,
Что русские мысли вселяет в умы, —
Те честные мысли, которым нет доли,
Которым нет смерти —
В которых так много и злобы и боли,
В которых так много любви!"""

Мы вставили текст прямо в программу, записав ее в переменную TEXT при помощи оператора присваивания =.
Поскольку переменную с текстом изменять не планируется, ее следует считать константой и записывать название заглавными буквами.
При работе с большими объемами текстовой информации текст загружается из отдельного файла.
Встроенная функция open() по умолчанию открывает файл по указанному имени и пути к нему в режиме чтения.
Функция возвращает объект типа file, у которого есть методы open() и close().
При возникновении проблем с кодировкой ее можно указать при открытии файла.

txtfile = open("warandpeace.txt", encoding="utf-8")
TEXT = txtfile.read()
txtfile.close()

В третьей версии языка подобная операция делается с использованием ключевых слов with и as:

with open("warandpeace.txt", encoding="utf-8") as txtfile:
    TEXT = txtfile.read()

Количество слов легко подсчитать при помощи метода split().
Количество символов – длина строки, полученной при сложении всех слов.

words = TEXT.split()
print(len(words)) # Вывести на экран количество слов
print(len("".join(words))) # Вывести на экран количество символов
wordsdict = {}
for word in words:
    word = word.lower().strip('"').strip("(").strip("!").strip("«").rstrip("...»").strip(",")
    if word not in wordsdict:
        wordsdict[word] = 1
    else:
        wordsdict[word] = wordsdict[word] + 1

wordslist = sorted(wordsdict.items(), key=lambda x: x[1], reverse=True)
print(wordslist)

longest = ""
wordsfreq = []
for word in wordsdict:
    wordsfreq.append((word, wordsdict[word]))
    if len(word) > len(longest):
        longest = word

wordsfreq.sort(key=lambda row: row[1], reverse=True)
print(wordsfreq == wordslist)

dct = {}
for word in wordsfreq:
    dct.update({word[0]: word[1]})
print(dct)

Медианное среднее

import statistics as st

TEXT = """Здесь текст для анализа.
Add text here.
"""

word_lens = []
for word in TEXT.split():
    word_lens.append(len(word))

median_val = st.median(word_lens)
mean_val = st.mean(word_lens)
print("Медианное среднее:", median_val, "Среднее:", mean_val, "Разница:", median_val - mean_val)

Ссылки

  • Закон Ципфа
    – эмпирическая закономерность распределения частоты слов естественного языка: если все слова языка (или просто достаточно длинного текста) упорядочить по убыванию частоты их использования, то частота n-го слова в таком списке окажется приблизительно обратно пропорциональной его порядковому номеру n.
  • Анализ текста онлайн
  • Текстовая обработка в языке Python
  • Regexp и Python: извлечение токенов из текста
  • Обработка текста
  • NLP – это весело! Обработка естественного языка на Python
  • Библиотека textwrap

ElatedMIndGjs

1 / 1 / 0

Регистрация: 17.05.2021

Сообщений: 5

1

«Программа подсчета слов»

17.05.2021, 01:11. Показов 2331. Ответов 12

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Вопрос по статье с сайта ( https://metanit.com/python/tutorial/5.4.php )
«Программа подсчета слов»

Есть код:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import os
 
 
def get_words(filename):
 
    with open(filename, encoding="utf8") as file:
        text = file.read()
    text = text.replace("n", " ")
    text = text.replace(",", "").replace(".", "").replace("?", "").replace("!", "")
    text = text.lower()
    words = text.split()
    words.sort()
    return words
 
 
def get_words_dict(words):
    words_dict = dict()
 
    for word in words:
        if word in words_dict:
            words_dict[word] = words_dict[word] + 1
        else:
            words_dict[word] = 1
    return words_dict
 
 
def main():
    filename = input ("Введите путь к файлу: ")
    if not os.path.exists(filename):
        print ("Указанный файл не существует")
    else:
        words = get_words(filename)
        words_dict = get_words_dict(words)
        print ("Кол-во слов: %d" % len(words))
        print ("Кол-во уникальных слов: %d" % len(words_dict))
        print ("Все использованные слова:")
        for word in words_dict:
             print(word.ljust(20), words_dict[word])
 
 
if __name__ == "__main__":
    main()

Объясните пожалуйста, как работает данный цикл?

Python
1
2
3
4
5
6
7
8
9
def get_words_dict(words):
    words_dict = dict()
 
    for word in words:
        if word in words_dict:
            words_dict[word] = words_dict[word] + 1
        else:
            words_dict[word] = 1
    return words_dict

В статье написано: «Получаем словарь из слов, где ключ — это уникальное слово, а значение — количество вхождений данного слова в тексте.»

Каким образом мы обращаемся к пустому словарю, перебирая в нем слова?
Когда мы перебираем словарь, первое слово является ключом для второго. Тогда каким образом работает алгоритм?
Каким образом мы получаем «значение = количество вхождений данного слова в тексте.», если значение = следующему слову в тексте?

Буду благодарен за подробный ответ.



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

17.05.2021, 01:11

Ответы с готовыми решениями:

Создать родительский класс «Склад» и 3 подкласса («принтеры»,» сканеры», «ксероксы»)
Начните работу над проектом «Склад оргтехники». Создайте класс, описывающий склад. А также класс…

Дан список станций желтой ветки московского метро: line = [«Третьяковская», «Марксистская», «Площадь Ильича», «Авиамотор
Дан список станций желтой ветки московского метро:
line =
Считайте, что движение происходит от…

Программа на Python «» репетитор по английскому «»
Напишите программу » репетитор по английскому ». Возможен выбор режима перевод с английского на…

Написать программу проверки правильности написания сочетаний «жи», «ши», «ча», «ща»
Помогите пожалуйста написать программу проверки правильности написания сочетаний "жи", "ши", "ча",…

12

1 / 1 / 0

Регистрация: 17.05.2021

Сообщений: 5

17.05.2021, 11:01

 [ТС]

2

upp



0



Fudthhh

Модератор

Эксперт Python

2745 / 1538 / 505

Регистрация: 21.02.2017

Сообщений: 4,126

Записей в блоге: 1

17.05.2021, 11:18

3

ElatedMIndGjs,

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Каким образом мы обращаемся к пустому словарю, перебирая в нем слова?

Чаво? Ты передаешь в функцию список слов, проходишься по этому списку циклом, проверяешь есть ли в словаре ключ который равен текущему слову, если да, то увеличиваешь на 1 значение, иначе создаешь ключ со значением один, по сути написано очень криво.

Добавлено через 3 минуты

Python
1
2
3
4
5
6
7
def get_words_dict_2(words):
    words_dict = {}
    for word in words:
        if word not in words_dict:
            words_dict[word] = 0
        words_dict[word] += 1
    return words_dict



0



Автоматизируй это!

Эксперт Python

6740 / 4298 / 1162

Регистрация: 30.03.2015

Сообщений: 12,643

Записей в блоге: 29

17.05.2021, 11:19

4

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Каким образом мы обращаемся к пустому словарю, перебирая в нем слова?

ну это он в начале пустой, а потом мы начинаем в него совать пары ключ значение в стиле слово:1

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

первое слово является ключом для второго.

нет. Там работает так —
слово есть в словаре? если нет то создать слово:1
если есть то берем число которое в значении у данного слова и увеличиваем его на 1, то есть будет слово:2

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Каким образом мы получаем «значение = количество вхождений данного слова в тексте.», если значение = следующему слову в тексте?

именно вышеописанным. Ключ -слово, значение -число (количесто вхождений)!



0



КулХацкеръ

17.05.2021, 11:25

Не по теме:

Welemir1, как же ты хорош! Просто и понятно разжевал. Я так не умею, мне проще кинуть код, чем объяснять что-то…



0



Автоматизируй это!

Эксперт Python

6740 / 4298 / 1162

Регистрация: 30.03.2015

Сообщений: 12,643

Записей в блоге: 29

17.05.2021, 11:31

6

КулХацкеръ,
ты просто в теме, потому кажется понятно. Надо подождать топикстартера — понял ли он?



0



1 / 1 / 0

Регистрация: 17.05.2021

Сообщений: 5

17.05.2021, 12:19

 [ТС]

7

Ну я примерно понял.
Единственный оставшийся вопрос: как переменная «words_dict = dict()» получает наш список слов?
Т.е. мы просто создали пустой словарь и он автоматически наполнился списком слов, потому что в параметре функции написано «words»?



0



Автоматизируй это!

Эксперт Python

6740 / 4298 / 1162

Регистрация: 30.03.2015

Сообщений: 12,643

Записей в блоге: 29

17.05.2021, 13:01

8

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Ну я примерно понял.

нет, не понял, к сожалению

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Единственный оставшийся вопрос: как переменная «words_dict = dict()» получает наш список слов?

не получает, он ПУСТОЙ! мы в цикле по 1 слову туда суем (но если слово уже есть то просто инкрементим переменную)

Цитата
Сообщение от ElatedMIndGjs
Посмотреть сообщение

Т.е. мы просто создали пустой словарь и он автоматически наполнился списком слов, потому что в параметре функции написано «words»?

нет! у нас есть цикл! может бросить пока этот сайт(метанит) и взять книгу? тема -циклы, функции, словари



1



Fudthhh

17.05.2021, 13:10

Не по теме:

Welemir1, отправь Лутца уже читать его, тут только он поможет.



0



1 / 1 / 0

Регистрация: 17.05.2021

Сообщений: 5

17.05.2021, 13:26

 [ТС]

10

А все я понял. Цикл сам добавляет по одному слову-номеру в словарь.

1)Цикл перебирает слова из списка.
2)Каждое слово из списка на первый раз попадает в «else». Ему присваивается значение 1
3)Если это слово попадется еще раз, ему присваивается значение +1 и т.д.



1



Автоматизируй это!

Эксперт Python

6740 / 4298 / 1162

Регистрация: 30.03.2015

Сообщений: 12,643

Записей в блоге: 29

17.05.2021, 13:27

11

Лучший ответ Сообщение было отмечено ElatedMIndGjs как решение

Решение

ElatedMIndGjs, бинго!



1



1 / 1 / 0

Регистрация: 17.05.2021

Сообщений: 5

17.05.2021, 13:28

 [ТС]

12

Спасибо!



0



Fudthhh

17.05.2021, 15:11


    «Программа подсчета слов»

Не по теме:

Welemir1, я написал тоже самое, а он прочитав задал кучу вопросов, и разбил мой ответ на список(



0



IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

17.05.2021, 15:11

Программа подсчёта слов
Требуется написать программу, которая будет считать количество слов в введённом тексте (желательно…

Программа для подсчета символов и слов в тексте
Добрый вечер
Я давно не занимался питоном, а тут мне попалось одно задание:

В идеале мне нужно…

Определить количество слов в строке, которые начинаются на букву «b»
Ввести из консоли строку. Определить количество слов в этой строке, которые начинаются на букву "b"…

Найти количество слов,которые содержат ровно 3 буквы «А»
Доброго времени суток!!!!Ребята,прошу помощи в задачах на Питоне!!завал полный!!!может кто…

Дана строка, содержащая русскоязычный текст. Найти количество слов, начинающихся с буквы «а»
Дана строка, содержащая русскоязычный текст. Найти количество слов, начинающихся с буквы "а". …

Дана строка, содержащая русскоязычный текст. Найти количество слов, начинающихся с буквы «е»
Дана строка, содержащая русскоязычный текст. Найти количество слов,
начинающихся с буквы "е".

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

13

Условие

Дан текст: в первой строке записано число строк, далее идут сами строки. Определите, сколько различных слов содержится в этом тексте.

Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.

s_text = set()

for i in range(int(input().rstrip())):

s = {j for j in (str(input()).split())}

s_text = s_text.union(s)

print(len(s_text))

Решение разработчиков

1
2
3
4
5
words = set()
for _ in range(int(input())):
    words.update(input().split())
print(len(words))

Случайные решения участников

Владимир Щеглов

1
2
3
4
5
6
7
= int(input())
= set()
for i in range(n):
    a = set(input().split())
    b |= a
print(len(b))

Владимир Шакиров

1
2
3
4
5
= int(input())
words = set()
[words.update( set(input().split())) for i in range(n)]
print(len(words))

Olga Sed

1
2
3
4
5
6
= int(input())
sset = set()
for i in range(n):
    sset = sset.union(set(input().split()))
print(len(sset))

Елена Горохова

1
2
3
4
5
6
7
8
n=int(input())
b=set()
for i in range(n):
    a=input().split(" ")
    for el in a:
        b.add(el)
print(len(b))

Andrey Platonov

1
2
3
4
5
words = set()
for i in range(int(input())):
    words.update(input().split())
print(len(words))

Программа подсчета слов

Последнее обновление: 05.02.2022

Рассмотрим работу со строками на небольшом примере, который будет представлять программу подсчета слов.

Пусть весь код программы будет выглядеть следующим образом:

# Программа подсчета слов в файле
import os


def get_words(filename):
    with open(filename, encoding="utf8") as file:
        text = file.read()
    text = text.replace("n", " ")
    text = text.replace(",", "").replace(".", "").replace("?", "").replace("!", "")
    text = text.lower()
    words = text.split()
    words.sort()
    return words


def get_words_dict(words):
    words_dict = dict()

    for word in words:
        if word in words_dict:
            words_dict[word] = words_dict[word] + 1
        else:
            words_dict[word] = 1
    return words_dict


def main():
    filename = input("Введите путь к файлу: ")
    if not os.path.exists(filename):
        print("Указанный файл не существует")
    else:
        words = get_words(filename)
        words_dict = get_words_dict(words)
        print(f"Кол-во слов: {len(words)}")
        print(f"Кол-во уникальных слов: {len(words_dict)}")
        print("Все использованные слова:")
        for word in words_dict:
            print(word.ljust(20), words_dict[word])


if __name__ == "__main__":
    main()

Здесь в функции get_words() производится начальная сегментация текста на слова. Пи этом все пунктуационные знаки удаляются, а переводы стоки заменяется на пробелы.
Затем происходит разбитие текста на слова. В качестве разделителя по умолчанию применяется пробел.

Далее в функции get_words_dict() получаем словарь из слов, где ключ — это уникальное слово, а значение — количество вхождений данного слова в тексте.

В функции main осуществляется ввод пути к файлу и вызов выше определенных функций, а также вывод все статистики.

Консольный вывод программы:

Введите путь к файлу: C:SomeDirhello.txt
Кол-во слов: 66
Кол-во уникальных слов: 54
Все использованные слова:
благодетель          2
в                    1
всего                1
вы                   1
горчичным            1
ее                   1
ежели                3
еще                  1
.......................

Skip to content

Задача «Количество слов в тексте»

Условие

Дан текст: в первой строке записано число строк, далее идут сами строки. Определите, сколько различных слов содержится в этом тексте.

Словом считается последовательность непробельных символов идущих подряд, слова разделены одним или большим числом пробелов или символами конца строки.

Решение задачи от разработчиков на Python:

Еще одно решение задачи на Python:

Смотреть видео — Задача «Количество слов в тексте» решение на Python

Делитесь с друзьями ссылкой на ответ и задавайте вопросы в комментариях! 👇

Related Posts

Посмотреть все комментарии

wpDiscuz

0

Оставьте комментарий! Напишите, что думаете по поводу статьи.x

Like this post? Please share to your friends:
  • Посмотреть файл excel онлайн
  • Посмотреть ссылки в файле excel
  • Посмотреть скрытый текст в word
  • Посмотреть примечание в word
  • Посмотреть кто внес изменение в word