/
Вопросы и ответы
/
Python
/

Как определить количество слов в строке python?

Как определить количество слов в строке python?

5 лет назад

Человек-Молекула

Ответы

1

Возможно самым простым и в то же время надежным будет способ с использованием регулярных выражений.

1
2
text = "Это простой пример строки, с запятой!"
len(re.findall(r'\w+', text))

Здесь используя регулярку \w+ мы отсеим слова от знаков препинания и пробелов. Если же у нас более проблемный текст, то можно подправить регулярку на следующую:

1
2
3
4
5
text = "Это более сложный пример: строка с пунктуацией и числами (123)!"


text = re.sub(r'[^\w\s]', '', text.lower())
len([word for word in text.split() if word])

Здесь нам также понадобится метод split() для разбиения строки по пробелам.

2 года назад

Ivan Mamtsev

0

можно использовать метод split у строки. Этот метод разбивает строку на список слов, разделенных пробелами или другими символами, которые указываются в качестве аргумента. Затем можно получить количество слов, полученных после разбиения, используя функцию len

Например:

1
2
3
4
s = "Это наш пример строки"
words = s.split()
num_words = len(words)
print(num_words)

В этом примере мы разбиваем строку s на список слов, разделенных пробелами, используя метод split, затем используем функцию len для получения количества элементов в списке. В итоге будет выведено число 4, так как в строке s 4 слова.

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

1
2
3
4
s = "Это, пример, строки"
words = s.split(",")
num_words = len(words)
print(num_words)

В этом примере мы разбиваем строку s на список слов, разделенных запятыми, и в итоге будет выведено число 3, так как в строке s 3 слова.

Вы также можете использовать регулярные выражения для разбиения строки по более сложным паттернам. Для этого можете использовать модуль re и функцию re.split. Например:

1
2
3
4
5
6
import re

s = "Это, пример строки"
words = re.split(r'[,\s]\s*', s)
num_words = len(words)
print(num_words)

В этом примере мы разбиваем строку s на список слов, разделенных запятыми или пробелами, и в итоге будет выведено число 3, так как в строке s 3 слова.

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

4 года назад

Сергей Мишин

0

Алгоритмов может несколько. Один из них такой:

  1. Разбить строку на массив, где каждое слово – отдельный элемент.
  2. Вычислить длину этого массива.
1
2
3
4
>>> colors = "red green blue"
>>> len(colors.split())
3
>>>

5 лет назад

Сергей К.

0

Разбейте строку на слова методом split() и посчитайте длину списка:

1
2
text = "Мама мыла раму"
print(len(text.split()))  # => 3

split() без аргументов делит строку по пробелам, табам и переносам строк. Несколько пробелов подряд считаются одним разделителем.

split() и split(" ")

1
2
3
text = "Мама  мыла   раму"
print(len(text.split()))     # => 3
print(len(text.split(" ")))  # => 6 — пустые строки между пробелами тоже считаются

Для подсчёта слов вызывайте split() без аргументов.

Слова со знаками препинания

split() оставляет запятые и точки внутри слов: "строки,". Если знаки препинания нужно отбросить, используйте регулярное выражение:

1
2
3
4
5
6
import re

text = "Это пример строки, с запятой!"
words = re.findall(r"\w+", text)
print(words)       # => ['Это', 'пример', 'строки', 'с', 'запятой']
print(len(words))  # => 5

\w+ находит последовательности букв, цифр и подчёркиваний, кириллицу тоже.

Сколько раз встречается каждое слово

1
2
3
4
5
6
from collections import Counter

text = "мама мыла раму мама"
counts = Counter(text.lower().split())
print(counts["мама"])         # => 2
print(counts.most_common(1))  # => [('мама', 2)]

Задачи со словами

Выбрать слова длиннее трёх букв:

1
2
3
words = "кот слон мышь жираф".split()
long_words = [w for w in words if len(w) > 3]
print(long_words)  # => ['слон', 'мышь', 'жираф']

Посчитать слова, в которых есть буква «а»:

1
2
words = input().split()
print(sum(1 for w in words if "а" in w))

Циклический сдвиг слов на одну позицию вправо:

1
2
words = "один два три".split()
print(" ".join(words[-1:] + words[:-1]))  # => три один два

Строки, списки и split() разбирают в бесплатном курсе «Основы Python», регулярные выражения — на курсе «Регулярные выражения».

16 дней назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845