Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 2

Новичок, очень хочу разобраться

15.03.2018, 23:34. Показов 1351. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
1)После открытия и прочтения файла требуется разбить текст на отдельные слова (именно слова, без знаков препинания).
2)Затем посчитать статистические данные: сколько в тексте слов длины 1, слов длины 2 и т.д. Статистику потребуется нормализовать, т.е. поделить количество слов в каждой категории на количество всех слов и выразить это отношение в процентах. После этого эти подсчитанные количества остаётся вывести на экран в порядке возрастания длин слов.
3)Описать готовый код в виде функции, принимающей текстовый файл и возвращающей статистику (в виде списка "[]" или словаря "{}", как будет удобнее). С её помощью провести сравнение нескольких разных текстов (например, новостной статьи, научной статьи и какой-нибудь прозы).
4) Для собранных данных вывести графики зависимости количества слов от длины слова (может помочь библиотека matplotlib).

Как я поняла, начинать нужно примерно так:

Python
1
2
3
4
5
6
7
#!/usr/bin/python
#-*- coding: utf-8 -*-
import matplotlib.pyplot as plt
import re
 
f=open("text.txt",'r', encoding="utf8") 
text=f.read()
Дальше мысль пропала....

Была идея удалить все символы кроме пробелов и букв, чтобы разбить текст на отдельные слова, но мне кажется, это совсем не то:

Python
1
2
3
4
5
s_words = []
for i in s:
    if i == " " or i.isalpha():
        s_words += [i]
s = "".join(s_words)

Буду рада любой помощи!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
15.03.2018, 23:34
Ответы с готовыми решениями:

Хочу разобраться с выводом в консоль
Хочу сделать так, чтобы вывод scalar_product был разбит так же как вывод остальных значений по классам - каждому значению соответствовало...

Напишите программу с объяснением каждого действия, очень хочу разобраться
Вход: последовательность n чисел A= и число v. Выход: индекс i, для которого v=A, или специальное значение null, если v не встречается в...

Очень простая проблема, просто я новичок(
const = 50 number = int(input('Твое число равно, больше или меньше, чем число', const, '?')) часть кода выглядит вот так. Вопрос в...

5
119 / 103 / 53
Регистрация: 13.04.2014
Сообщений: 233
16.03.2018, 00:05
Лучший ответ Сообщение было отмечено julymorningstar как решение

Решение

Python
1
2
3
4
5
6
>>> text = '''1)После открытия и прочтения файла требуется разбить текст на отдельные слова (именно слова, без знаков препинания).
2)Затем посчитать статистические данные: сколько в тексте слов длины 1, слов длины 2 и т.д. Статистику потребуется нормализовать, т.е. поделить количество слов в каждой категории на количество всех слов и выразить это отношение в процентах. После этого эти подсчитанные количества остаётся вывести на экран в порядке возрастания длин слов. 
3)Описать готовый код в виде функции, принимающей текстовый файл и возвращающей статистику (в виде списка "[]" или словаря "{}", как будет удобнее). С её помощью провести сравнение нескольких разных текстов (например, новостной статьи, научной статьи и какой-нибудь прозы).
4) Для собранных данных вывести графики зависимости количества слов от длины слова (может помочь библиотека matplotlib).'''
>>> re.findall(r'(?<=[\W])(\w+?)(?=[\W])', text)
['После', 'открытия', 'и', 'прочтения', 'файла', 'требуется', 'разбить', 'текст', 'на', 'отдельные', 'слова', 'именно', 'слова', 'без', 'знаков', 'препинания', '2', 'Затем', 'посчитать', 'статистические', 'данные', 'сколько', 'в', 'тексте', 'слов', 'длины', '1', 'слов', 'длины', '2', 'и', 'т', 'д', 'Статистику', 'потребуется', 'нормализовать', 'т', 'е', 'поделить', 'количество', 'слов', 'в', 'каждой', 'категории', 'на', 'количество', 'всех', 'слов', 'и', 'выразить', 'это', 'отношение', 'в', 'процентах', 'После', 'этого', 'эти', 'подсчитанные', 'количества', 'остаётся', 'вывести', 'на', 'экран', 'в', 'порядке', 'возрастания', 'длин', 'слов', '3', 'Описать', 'готовый', 'код', 'в', 'виде', 'функции', 'принимающей', 'текстовый', 'файл', 'и', 'возвращающей', 'статистику', 'в', 'виде', 'списка', 'или', 'словаря', 'как', 'будет', 'удобнее', 'С', 'её', 'помощью', 'провести', 'сравнение', 'нескольких', 'разных', 'текстов', 'например', 'новостной', 'статьи', 'научной', 'статьи', 'и', 'какой', 'нибудь', 'прозы', '4', 'Для', 'собранных', 'данных', 'вывести', 'графики', 'зависимости', 'количества', 'слов', 'от', 'длины', 'слова', 'может', 'помочь', 'библиотека', 'matplotlib']
Добавлено через 3 минуты
Python
1
2
3
4
from collections import Counter
>>> lst = re.findall(r'(?<=[\W])(\w+?)(?=[\W])', text)
>>> Counter(len(s) for s in lst)
Counter({1: 21, 5: 17, 7: 14, 6: 12, 9: 11, 4: 11, 10: 10, 3: 7, 8: 6, 2: 5, 11: 4, 12: 2, 14: 1, 13: 1})
Здесь первое значение - длина слова, второе - частота использования.
1
0 / 0 / 0
Регистрация: 15.03.2018
Сообщений: 2
16.03.2018, 00:09  [ТС]
Спасибо большое за ответ!!!
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
16.03.2018, 01:14
orAnd,
r'(?<=[\W])(\w+?)(?=[\W])' => r'\b(\w+?)\b'
Работает по тому же принципу, но находит на 1 потерянный токен больше.
1
119 / 103 / 53
Регистрация: 13.04.2014
Сообщений: 233
16.03.2018, 10:25
Garry Galler, спасибо за совет, я тоже только учусь.
Ещё, возможно надо произвести последующую фильтрацию полученного списка от слов типа '123', 'т', 'д', 'е' (если, конечно такие не нужны). Или заменить '\w' на группу типа '[А-Яа-я]'(это спасёт только от цифр)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
16.03.2018, 21:27
orAnd, замените на
Python
1
re.sub(r'[^А-Яа-я ]+','',text)
останутся буквы и пробелы. но тут нужен лексический анализ, чтобы фильтровать слова типа т.д/т.е. это регулярками не отфильтруешь.

Добавлено через 2 минуты
как вариант составить список исключений
Python
1
deprecated_words=['т.е.','т.д']# etc...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.03.2018, 21:27
Помогаю со студенческими работами здесь

Новичок в Python, не могу разобраться в коде на бота прогноза погоды
Решил создать бота в телеграмме с прогнозом погоды , сам я еще не умею поэтому взял код с интернета , в ставил в PYcharm и выдает ошибку...

Хочу разобраться с условием задачи
Дали следующую задачу (полное условие) - &quot;На вершине лесенки, содержащей N ступенек, находится мячик, который начинает прыгать по ним вниз,...

Хочу разобраться в задаче на питоне.подкиньте идею
Дана строка. Найдите в этой строке второе вхождение буквы f, и выведите индекс этого вхождения. Если буква f в данной строке встречается...

Хочу разобраться почему последние elif (ы) не срабатывают
import random a = random.randint (0 , 60 ) while True : b = int(input('Введите случайное число от 0 до 60: ')) if b ==...

Я хочу разобраться в Python , но у меня произошла проблема с CMD
Я уже пробовал миллион способов открыть файл amadeus.py , но cmd пишет 'Не является внутренней или внешней командой,исполняемой программой...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru