- Используйте методы
split()
иlen()
для подсчета слов в строке Python - Используйте модуль RegEx для подсчета слов в строке Python
- Используйте методы
sum()
,strip()
иsplit()
для подсчета слов в строке Python - Используйте метод
count()
для подсчета слов в Python String Python
Из этого туториала Вы узнаете, как считать слова в строковом Python.
Используйте методы split()
и len()
для подсчета слов в строке Python
split()
– это встроенный в Python метод, который разделяет слова внутри строки с помощью определенного разделителя и возвращает массив строк. Этот метод принимает в качестве аргумента не более двух параметров:
separator
(необязательно) – действует как разделитель (например, запятые, точка с запятой, кавычки или косая черта). Задает границу, на которой нужно разделить строку. По умолчаниюразделителем
является любой пробел (пробел, новая строка, табуляция и т. Д.), Еслиseparator
не указан.maxsplit
(необязательно) – определяет максимальное количество разделений. Значение по умолчаниюmaxsplit
, если не определено, равно-1
, что означает, что он не имеет ограничений и разбивает строку на несколько частей.
Синтаксис split()
:
str.split(separator, maxsplit)
len () также является встроенным методом Python, который возвращает количество строк в массиве или подсчитывает длину элементов в объекте. Этот метод принимает только один параметр: строку, байты, список, объект, набор или коллекцию. Он вызовет исключение TypeError, если аргумент отсутствует или недействителен.
Синтаксис len()
:
Посмотрим, как методы split()
и len()
подсчитывают количество слов в строке.
Пример 1: без параметров
# initialize string
text = 'The quick brown fox jumps over the lazy dog'
# default separator: space
result = len(text.split())
print("There are " + str(result) + " words.")
Выход:
Пример 2: С параметром separator
# initialize string
bucket_list = 'Japan, Singapore, Maldives, Europe, Italy, Korea'
# comma delimiter
result = len(bucket_list.split(','))
# Prints an array of strings
print(bucket_list.split(','))
print("There are " + str(result) + " words.")
Выход:
['Japan', ' Singapore', ' Maldives', ' Europe', ' Italy', ' Korea']
There are 6 words.
Метод split()
вернет новый список строк, а len()
считает строку внутри списка.
Пример 3: С параметрами separator
и maxsplit
# initialize string
bucket_list = 'Japan, Singapore, Maldives, Europe, Italy, Korea'
# comma delimiter
result = len(bucket_list.split(',', 3))
# Prints an array of strings
print(bucket_list.split(',', 3))
print("There are " + str(result) + " words.")
Выход:
['Japan', ' Singapore', ' Maldives', ' Europe, Italy, Korea']
There are 4 words.
maxsplit
разделяет только первые три запятые в bucket_list
. Если вы установите maxsplit
, в списке будет элементmaxsplit+1
.
Выход:
['Japan', ' Singapore', ' Maldives, Europe, Italy, Korea']
There are 3 words.
Метод split()
разбивает большие строки на более мелкие. Следовательно, подсчет слов в массиве строк будет основан не на словах, а на том, как определен разделитель.
Используйте модуль RegEx для подсчета слов в строке Python
Регулярное выражение, сокращенно regex
или regexp
, – очень мощный инструмент для поиска и управления текстовыми строками; это можно использовать для предварительной обработки данных, проверки, поиска шаблона в текстовой строке и т. д. Regex также может помочь в подсчете слов в текстовой строке в сценариях, где есть знаки препинания или специальные символы, которые не нужны. Regex – это встроенный в Python пакет, поэтому нам просто нужно импортировать пакет re
, чтобы начать его использовать.
# import regex module
import re
# initialize string
text = 'Python !! is the be1st $$ programming language @'
# using regex findall()
result = len(re.findall(r'w+', text))
print("There are " + str(result) + " words.")
Выход:
Используйте методы sum()
, strip()
и split()
для подсчета слов в строке Python
Этот подход считает слова без использования регулярного выражения. sum()
, strip()
и split()
– все это встроенные методы в Python. Мы кратко обсудим каждый метод и его функции.
Метод sum()
складывает элементы слева направо и возвращает сумму. Метод принимает два параметра:
iterable
(обязательно) – строка, список, кортеж и т. Д. Для суммирования. Это должны быть числа.start
(необязательно) – число, добавляемое к сумме или возвращаемому значению метода.
Синтаксис sum()
:
Следующим является метод strip()
, который возвращает копию строки без начальных и конечных пробелов, если нет аргументов; в противном случае это удаляет строку, определенную в аргументе.
chars
(необязательно) – указывает строку, которую нужно удалить из левой и правой частей текста.
Синтаксис string.strip()
:
Наконец, метод split()
уже обсуждался до этого подхода.
Теперь давайте используем эти методы вместе для подсчета слов в строке. Во-первых, нам нужно импортировать строку
, встроенный модуль Python, прежде чем использовать его функции.
import string
# initialize string
text = 'Python !! is the be1st $$ programming language @'
# using the sum(), strip(), split() methods
result = sum([i.strip(string.punctuation).isalpha() for i in text.split()])
print("There are " + str(result) + " words.")
Выход:
Используйте метод count()
для подсчета слов в Python String Python
Метод count()
– это встроенный в Python метод. Он принимает три параметра и возвращает количество вхождений на основе данной подстроки.
substring
(обязательно) – ключевое слово для поиска в строкеstart
(опция) – указатель начала поискаstop
(опция) – указатель того, где заканчивается поиск
Примечание. В Python индекс начинается с 0
.
Синтаксис count()
:
string.count(substring, start, end)
Этот метод отличается от предыдущего, поскольку он возвращает не общее количество слов, найденных в строке, а количество найденных вхождений для данной подстроки. Посмотрим, как работает этот метод, на примере ниже:
# initialize string
text = "Python: How to count words in string Python"
substring = "Python"
total_occurrences = text.count(substring)
print("There are " + str(total_occurrences) + " occurrences.")
Выход:
В этом методе не имеет значения, является ли подстрока целым словом, фразой, буквой или любой комбинацией символов или цифр.
Таким образом, вы можете выбрать любой из этих подходов в зависимости от вашего варианта использования. Для слов, разделенных пробелами, мы можем использовать простой подход: функции split()
или len()
. Для фильтрации текстовых строк для подсчета слов без специальных символов используйте модуль regex
. Создайте шаблон, в котором подсчитываются слова, не содержащие определенных символов. Без использования regex
используйте альтернативу, которая представляет собой комбинацию методов sum()
+ strip()
+ split()
. Наконец, метод count()
также может использоваться для подсчета конкретного слова, найденного в строке.
можно использовать метод split
у строки. Этот метод разбивает строку на список слов, разделенных пробелами или другими символами, которые указываются в качестве аргумента. Затем можно получить количество слов, полученных после разбиения, используя функцию len
Например:
s = "Это наш пример строки"
words = s.split()
num_words = len(words)
print(num_words)
В этом примере мы разбиваем строку s
на список слов, разделенных пробелами, используя метод split
, затем используем функцию len
для получения количества элементов в списке. В итоге будет выведено число 4, так как в строке s
4 слова.
Обратите внимание, что метод split
без аргументов разбивает строку на список слов, разделенных пробелами.
Если вы хотите разбить строку по другому символу, например, запятой, то можете передать этот символ в качестве аргумента методу split
. Например:
s = "Это, пример, строки"
words = s.split(",")
num_words = len(words)
print(num_words)
В этом примере мы разбиваем строку s
на список слов, разделенных запятыми, и в итоге будет выведено число 3, так как в строке s
3 слова.
Вы также можете использовать регулярные выражения для разбиения строки по более сложным паттернам. Для этого можете использовать модуль re
и функцию re.split
. Например:
import re
s = "Это, пример строки"
words = re.split(r'[,s]s*', s)
num_words = len(words)
print(num_words)
В этом примере мы разбиваем строку s
на список слов, разделенных запятыми или пробелами, и в итоге будет выведено число 3, так как в строке s
3 слова.
Обратите внимание, что в некоторых случаях может быть требуется учитывать не только пробелы и запятые, но и другие символы, которые могут разделять слова. В таком случае вы можете использовать регулярные выражения или просто вручную разбивать строку на список слов, используя циклы и условные операторы.
На чтение 4 мин Просмотров 2.6к. Опубликовано
В Python есть много встроенных функций и методов, которые упрощают обработку строк. Одна из часто встречающихся задач — подсчет количества слов в строке. Это может быть полезно, например, при анализе текстов или при работе с данными, связанными с языком. В этой статье мы рассмотрим несколько способов, как посчитать количество слов в строке в Python.
Содержание
- Методы для подсчета количества слов в строке
- Использование метода split()
- Метод count()
- Использование регулярных выражений
Методы для подсчета количества слов в строке
Для подсчета количества слов в строке в Python существует несколько методов. Рассмотрим наиболее распространенные из них.
Использование метода split()
Метод split()
является одним из самых простых и наиболее используемых способов для подсчета количества слов в строке в Python. Этот метод разбивает строку на список слов, используя разделитель, который задается в качестве аргумента метода. По умолчанию разделителем является пробел.
Вот как можно использовать метод split()
для подсчета количества слов в строке:
string = "Python is a popular programming language"
word_list = string.split()
print(len(word_list))
Здесь мы определяем строку «Python is a popular programming language» и используем метод split()
для разбиения ее на список слов. Затем мы используем функцию len()
для подсчета количества элементов в списке, которое и будет количеством слов в исходной строке.
Этот подход работает не только для простых строк, но и для строк, содержащих знаки препинания и другие символы. Однако, если строка содержит множественные пробелы или другие символы-разделители, метод split()
может дать неправильный результат.
Например, если строка содержит несколько пробелов между словами, метод split()
может воспринимать их как отдельные элементы, что приведет к неправильному результату. Для таких случаев необходимо использовать более продвинутые методы.
Метод count()
Метод count()
— это встроенный метод в Python, который используется для подсчета количества вхождений подстроки в строку. В данном случае, мы можем использовать его для подсчета количества слов в строке.
Метод count()
принимает один обязательный аргумент — подстроку, которую нужно искать в строке, и два необязательных аргумента — start
и end
, которые указывают начальную и конечную позиции в строке для поиска подстроки. Если аргументы start
и end
не указаны, метод будет искать подстроку во всей строке.
Пример использования метода count()
для подсчета количества слов в строке:
sentence = "The quick brown fox jumps over the lazy dog"
word_count = sentence.count(" ") + 1
print("Количество слов в строке:", word_count)
В этом примере мы сначала определяем строку sentence
, содержащую несколько слов. Затем мы используем метод count()
для подсчета количества пробелов в строке, добавляем 1, и получаем количество слов в строке. Результат выводится на экран.
Этот метод может быть полезен, если вам нужно быстро подсчитать количество слов в строке без использования регулярных выражений или метода split()
. Однако стоит учитывать, что он может не работать должным образом, если в строке есть знаки препинания или другие символы, отличные от пробелов, используемых для разделения слов.
Использование регулярных выражений
Использование регулярных выражений — это еще один способ подсчета количества слов в строке. В Python есть модуль re
, который позволяет работать с регулярными выражениями.
Регулярные выражения — это формальный язык поиска и манипулирования подстроками в тексте. Они используются для поиска определенных паттернов в строке, таких как слова, числа, электронные адреса и т.д.
Для подсчета количества слов в строке с помощью регулярных выражений, мы можем использовать функцию findall()
из модуля re
. Эта функция ищет все совпадения с регулярным выражением и возвращает список найденных строк.
Вот пример использования регулярного выражения для подсчета количества слов в строке:
import re
string = "Это пример строки для подсчета слов"
word_list = re.findall(r'bw+b', string)
print("Количество слов в строке:", len(word_list))
В этом примере мы импортировали модуль re
, определили строку, которую мы хотим проанализировать, и затем использовали функцию findall()
с регулярным выражением r'bw+b'
. Это регулярное выражение соответствует словам, которые состоят из одного или более буквенно-цифровых символов и отделены от других символов пробелами или границами слов.
Функция findall()
вернет список найденных слов, который мы затем передадим в функцию len()
для подсчета количества слов.
Improve Article
Save Article
Like Article
Improve Article
Save Article
Like Article
Given a String. The task is to find out the Number Of Words And Characters Present In The String.
Examples:
Input: Geeksforgeeks is best Computer Science Portal Output: The number Of Words are : 6 The Number Of Characters are : 45 Input: Hello World!!! Output: The original string is : Hello World!!! The number of words in string are : 2 The number of words in string are : 14
Count The Number Of Characters present in a string using len() function. You can also use a for loop for counting characters
char=0 for i in string: char=char+1
For Counting
Method 1: Using split()
The split function is quite useful and usually quite a generic method to get words out of the list, but this approach fails once we introduce special characters in the list.
Python3
test_string
=
"Geeksforgeeks is best Computer Science Portal"
print
(
"The original string is : "
+
test_string)
res
=
len
(test_string.split())
print
(
"The number of words in string are : "
+
str
(res))
print
(
"The number of words in string are : "
,
len
(test_string))
Output:
The original string is : Geeksforgeeks is best Computer Science Portal
The number of words in string are : 6
The number of words in string are : 45
Method 2: Using regex module
Here findall() function is used to count the number of words in the sentence available in a regex module.
Python3
import
re
test_string
=
"GeeksForGeeks is a learning platform"
print
(
"The original string is : "
+
test_string)
res
=
len
(re.findall(r
'w+'
, test_string))
print
(
"The number of words in string are : "
+
str
(res))
print
(
"The number of Characters in string are : "
,
len
(test_string))
Output:
The original string is : GeeksForGeeks is a learning platform
The number of words in string are : 5
The number of Characters in string are : 36
Time Complexity: O(n)
Auxiliary Space: O(n)
Method 3: Using sum()+ strip()+ split() function
Here we first check all the words in the given sentence and add them using the sum() function.
Python3
import
string
test_string
=
"GeeksForGeeks is a learning platform"
print
(
"The original string is: "
+
test_string)
res
=
sum
([i.strip(string.punctuation).isalpha()
for
i
in
test_string.split()])
print
(
"The number of words in string are : "
+
str
(res))
print
(
"The number of characters in string are : "
,
len
(test_string))
Output:
The original string is: GeeksForGeeks is a learning platform
The number of words in string are : 5
The number of characters in string are : 36
Method #4 : Using count() and len() methods
Python3
test_string
=
"Geeksforgeeks is best Computer Science Portal"
print
(
"The original string is : "
+
test_string)
res
=
test_string.count(
" "
)
+
1
print
(
"The number of words in string are : "
+
str
(res))
print
(
"The number of words in string are : "
,
len
(test_string))
Output
The original string is : Geeksforgeeks is best Computer Science Portal The number of words in string are : 6 The number of words in string are : 45
The Time and Space Complexity for all the methods are the same:
Time Complexity: O(n)
Auxiliary Space: O(n)
Last Updated :
16 Feb, 2023
Like Article
Save Article
В этой статье мы разберем, как при помощи Python посчитать слова в строке и текстовом файле, а также – как определить частотность слов. Подсчет слов – полезный навык, он может пригодиться при работе с алгоритмами машинного обучения.
Процессы подсчета слов и вычисления их частотности, которые мы разберем, одинаковы как для строк, так и для всего текстового файла. Поэтому давайте быстренько припомним, как читать текстовый файл в Python.
# Reading a Text File in Python file_path = '/Users/datagy/Desktop/sample_text.txt' with open(file_path) as file: text = file.read()
Примечание редакции: подробнее о работе с текстовыми файлами читайте в статье “Как обрабатывать текстовые файлы в Python 3”.
Подсчет слов с помощью функции split()
Одним из самых простых способов подсчета количества слов в строке Python является использование функции split()
. Функция split()
выглядит следующим образом:
# Разбор функции split() str.split( sep=None # Разделитель, по которому будет разбиваться строка maxsplit=-1 # Число разбиений )
По умолчанию Python рассматривает последовательные пробельные символы как один разделитель. Это означает, что если в нашей строке идут несколько пробелов подряд, то они будут считаться одним разделителем. Давайте посмотрим, что возвращает этот метод:
# Разделение строки при помощи .split() text = 'Welcome to PythonTurbo! Here you will learn Python.' print(text.split()) # Вывод: # ['Welcome', 'to', 'PythonTurbo!', 'Here', 'you', 'will', 'learn', 'Python.']
Как видите, метод возвращает список элементов. Поскольку для подсчета количества элементов в списке можно использовать функцию len()
, мы можем организовать подсчет слов. Давайте посмотрим, как это выглядит:
# Разделение строки при помощи .split() text = 'Welcome to PythonTurbo! Here you will learn Python.' print(len(text.split())) # Вывод: 8
Подсчет количества слов с помощью regex
Еще один простой способ подсчитать количество слов в строке Python – использовать библиотеку регулярных выражений re
. Библиотека поставляется с функцией findall()
, которая позволяет искать различные шаблоны строк.
Поскольку поиск при помощи регулярных выражений происходит по шаблону, сначала мы должны определить наш шаблон. В данном случае нам нужен шаблон из буквенно-цифровых символов, разделенных пробелами.
Для этого мы можем использовать шаблон w+
, где w
обозначает любой буквенно-цифровой символ, а +
– одно или несколько вхождений. Пробельные символы в шаблон не попадают.
Давайте посмотрим, как можно использовать этот метод для подсчета слов:
# Подсчет слов при помощи регулярных выражений import re text = 'Welcome to PythonTurbo! Here you will learn Python.' print(len(re.findall(r'w+', text))) # Вывод: 8
Вычисление частотности слов в Python
Чтобы определить, как часто в тексте встречаются те или иные слова, можно использовать либо класс defaultdict
, либо класс Counter
.
Использование defaultdict для вычисления частотности слов
defaultdict
расширяет возможности обычного словаря Python, предоставляя полезные функции для инициализации отсутствующих ключей. Благодаря этому мы можем перебирать фрагменты текста и подсчитывать количество вхождений каждого слова.
Давайте рассмотрим пример.
# Определение частотности слов при помощи defaultdict from collections import defaultdict import re text = 'Welcome to PythonTurbo! Python is fun! Python, Python, Python!' counts = defaultdict(int) for word in re.findall('w+', text): counts[word] += 1 print(counts) # Вывод: # defaultdict(<class 'int'>, {'Welcome': 1, 'to': 1, 'PythonTurbo': 1, 'Python': 4, 'is': 1, 'fun': 1})
Давайте разберем, что мы здесь сделали:
- Мы импортировали функцию
defaultdict
и библиотекуre
. - Мы загрузили некоторый текст и создали defaultdict, используя функцию
int
. - Затем мы перебрали список слов, добавляя единицу к счетчику при каждой встрече слова.
Использование Counter для вычисления частотности слов
Другой способ посчитать вхождения слов – использовать класс Counter
. Преимущество этого подхода в том, что мы можем даже легко определить наиболее часто встречающееся слово. Давайте посмотрим, как это работает:
# Определение частотности слов при помощи Counter from collections import Counter import re text = 'Welcome to PythonTurbo! Python is fun! Python, Python, Python!' counts = Counter(re.findall('w+', text)) print(counts) # Вывод: # Counter({'Python': 4, 'Welcome': 1, 'to': 1, 'PythonTurbo': 1, 'is': 1, 'fun': 1})
Давайте разберем, что мы здесь сделали:
- Импортировали необходимые библиотеки и классы
- Передали полученный список из функции
findall()
в классCounter
- Распечатали результат
Одним из преимуществ этого подхода является то, что мы можем легко найти самое частотное слово с помощью функции .most_common()
. Эта функция возвращает отсортированный список кортежей, упорядочивая элементы от наиболее частотного к наименее частотному. Поэтому, чтобы найти слово, которое встречается чаще всего, можно просто обратиться к индексу 0:
# Поиск наиболее частотного слова from collections import Counter import re text = 'Welcome to PythonTurbo! Python is fun! Python, Python, Python!' counts = Counter(re.findall('w+', text)) print(counts.most_common()[0]) # Вывод: # ('Python', 4)
Заключение
Из этой статьи вы узнали, как узнать количество слов и их частотность с помощью Python. Мы разобрали несколько подходов, включая использование метода .split()
и библиотеки re
. Также мы рассмотрели применение defaultdict
и Counter
для определения частоты вхождения слов.
Перевод статьи «Python: Count Words in a String or File».