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

Подсчитать количество слов в предложении

29.03.2017, 14:30. Показов 14642. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
4.Написать функцию, подсчитывающую количество слов в предложении.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.03.2017, 14:30
Ответы с готовыми решениями:

Количество слов в предложении
Дано пользовательское предложение, нужно посчитать количество букв в самом большом слове. Все мои попытки заканчиваются подсчетом...

Как посчитать количество слов в предложении?
помогите пожалуйста сделать эту программу на языке Python на паскале выглядит так: var s: string; l: integer; procedure...

Как посчитать количество слов в предложении?
Определить количество слов в предложении, записанном на английском языке в python напишите программы правила 5.5. Запрещено...

7
1 / 1 / 0
Регистрация: 03.03.2016
Сообщений: 39
01.04.2017, 20:44
Python
1
2
3
def func(string):
    words = [word for word in string.split() if word.isalpha()]
    return (len(words))
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.04.2017, 21:00
string - это название модуля, возможно, лучше выбрать другое имя.

также, если в предложении есть знаки препинания, все сильно портится
Python
1
2
3
s = 'Hello, R2D2, how are you?'
words = [word for word in s.split() if word.isalpha()]
print(words)
Code
1
['how', 'are']
0
1 / 1 / 0
Регистрация: 03.03.2016
Сообщений: 39
01.04.2017, 21:16
блин, да
тогда так
Python
1
2
3
4
import re
s = 'Hello, R2D2, how are you?'
words = [word for word in re.sub('[^\w\s]','',s).split()]
print(words)
0
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.04.2017, 21:27
Python
1
words = [word for word in re.findall(r'\w+', s)]
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
01.04.2017, 22:39
Дмитрий Л,
Удаляет из слов дефисы и небуквенные орфографические знаки (да, есть и такие) являющиеся частью слова.

Jabbson,
Наоборот - зря разделяет сложные составные слова, который считаются одним словом.
-------------------------------------------------------
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
43
44
45
46
47
48
49
50
51
52
53
54
55
import string,re
 
text = """Снабженный  таким напутствием, д'Артаньян как  телесно,  так и  духовно
точь-в-точь  походил  на  героя Сервантеса,  с которым  мы его  столь удачно
сравнили,  когда  долг  рассказчика  заставил  нас  набросать  его  портрет.
Дон-Кихоту ветряные мельницы представлялись великанами, а стадо овец - целой
армией."""
 
# уточненный вариант на основе regexp-а из pymorphy2; результат аналогичен nltk.word_tokenize  - используется для split
# добавлены дополнительные знаки: знак типографского апострофа \u2019, юникодный дефис \u2010, косая черта \u002F, 
# которые являются небуквенными орфографическими знаками и могут являться частью слова, а также компьютерный апостроф \u0027 - 
# хотя он и не должен использоваться в правильно оформленных текстах
word_tokenize = re.compile(r"([^\w_\u2019\u2010\u002F\u0027-]|[+])")  
punctuation = string.punctuation + '\u2014\u2013\u2012\u2010\u2212' + '«»‹›‘’“”„`'
 
def word_tokenizer(text):
    for token in word_tokenize.split(text): 
        if token and not token.isspace() and not token in punctuation:
            yield token
            
tokens = [word for word in word_tokenizer(text)]
print(tokens)
>>['Снабженный', 'таким', 'напутствием', "д'Артаньян", 
'как', 'телесно', 'так', 'и', 'духовно', 
'точь-в-точь', 'походил', 'на', 'героя', 
'Сервантеса', 'с', 'которым', 'мы', 'его', 
'столь', 'удачно', 'сравнили', 'когда', 'долг', 
'рассказчика', 'заставил', 'нас', 'набросать', 
'его', 'портрет', 'Дон-Кихоту', 'ветряные', 
'мельницы', 'представлялись', 'великанами', 'а',
'стадо', 'овец', 'целой', 'армией']
 
print(len(tokens))  
>>39 
 
import nltk
def nltk_tokenizer(text):
    for token in nltk.word_tokenize(text):
        if token and not token.isspace() and not token in punctuation:
            yield token 
 
tokens = [word for word in nltk_tokenizer(text)] 
print(tokens)
>>['Снабженный', 'таким', 'напутствием', "д'Артаньян", 
'как', 'телесно', 'так', 'и', 'духовно', 
'точь-в-точь', 'походил', 'на', 'героя',
'Сервантеса', 'с', 'которым', 'мы', 'его', 
'столь', 'удачно', 'сравнили', 'когда', 'долг',
'рассказчика', 'заставил', 'нас', 'набросать', 
'его', 'портрет', 'Дон-Кихоту', 'ветряные', 
'мельницы', 'представлялись', 'великанами', 'а',
'стадо', 'овец', 'целой', 'армией']
 
print(len(tokens))
>>39
P.S. Люди - используйте правильные, проверенные на реальных текстах решения - зачем пытаться все сделать по-простому?
Упрощенные примеры ничему не научат - только ошибочным представлениям.
В nltk, кстати, "регулярка" для токенизации слов еще сложнее, но этот вариант на основе pymorphy2 дает тот же эффект, хотя и его еще есть чем расширить.
0
2 / 2 / 0
Регистрация: 01.04.2017
Сообщений: 5
01.04.2017, 23:46
Цитата Сообщение от Jabbson Посмотреть сообщение
words = [word for word in re.findall(r'\w+', s)]
а зачем там for? нам же количество надо узнать

Python
1
2
3
4
import re
s = 'Hello, R2D2: how; are you?'
w = len(re.findall('\w+', s))
print(w)
1
Эксперт по компьютерным сетям
 Аватар для Jabbson
5907 / 3359 / 1036
Регистрация: 03.11.2009
Сообщений: 10,008
01.04.2017, 23:48
Да, все верно, это лишнее. Сначала там было еще условие "if word" на конце, но потом отпало а цикл остался.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2017, 23:48
Помогаю со студенческими работами здесь

Вывести количество слов в предложении со знаками препинания
Нужно вывести количество слов в предложении со знаками препинания, н-р: Hello , World ! 2

Определить в предложении количество слов, начинающихся на указанную букву
Задано предложение. Написать программу, которая определяет количество слов, начинающихся на указанную букву

Определить количество слов в предложении, начинающихся согласными буквами
При отсутствии слов в строке выдавать соответствующее сообщение

Количество слов в предложении
Напишите программу count.py, которая получает из первого аргумента командной строки предложение, а затем выводит количество слов в этом...

Подсчитать количество знаков препинания в предложении
Написать программу, подсчитывающую количество знаков препинания в заданном предложении.


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Программная установка даты и запрет ее изменения
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
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru