Неверно, потому что «How» и «how» — лишь одинаковые слова по смыслу, но разные по написанию, соответственно, эти строки не равны друг другу. Поэтому интерпретатор считает, что w in text это False , и инкрементирования переменной r не происходит (она не увеличивается на 1 ).
P.S. Вы можете использовать встроенные функции .lower() или .upper() , чтобы регистр обрабатываемых вами строк был единым.
Отслеживать
ответ дан 18 авг 2016 в 15:13
approximatenumber approximatenumber
1,487 10 10 серебряных знаков 25 25 бронзовых знаков
Действительно это так. Спасибо!
18 авг 2016 в 15:20
19 авг 2016 в 21:25
В коде две проблемы:
- уже упомянутая проблема с регистром, которую можно исправить, используя str.casefold()
- w in text ищет подстроки, а не слова. Следует разбить текст на слова (зависит от задачи, что является словом, например: «любая группа символов, несодержащая пробелы» или «любая группа символов, принадлежащих w классу (Unicode word characters)».
Чтобы подсчитать сколько из заданных (уникальных) слов присутствует в заданном тексте (используя сравнение без учёта регистра):
Как подсчитать количество слов в строке на C#?
#!/usr/bin/env python3 import re def count_words(text, words): text_words = set(re.findall(r’w+’, text.casefold())) return sum(w in text_words for w in set(map(str.casefold, words))) print(count_words(«How aresjfhdskfhskd you?», )) # -> 2
Результат 2 , а не 3 потому что ‘aresjfhdskfhskd’ != ‘are’ .
Если хочется считать именно подстроки, вместо отдельных слов:
#!/usr/bin/env python3 def count_substr(text, substrs): text = text.casefold() return sum(s in text for s in set(map(str.casefold, substrs))) print(count_substr(«How aresjfhdskfhskd you?», )) # -> 3
set() используется, чтобы не считать повторяющиеся строки несколько раз.
Источник: ru.stackoverflow.com
4 Надежных способа Подсчета Слов в строке в Python
В python для подсчета слов в строке мы можем использовать функцию split (), а также функцию count и цикл for.
Строки являются основными типами данных в любом языке программирования, включая python. Нам нужно выполнить множество различных операций, также известных как предварительная обработка строк, таких как удаление ненужных пробелов, подсчет слов в строке, создание строки в одних и тех же случаях (прописных или строчных). В этой статье мы узнаем, как считать слова в строке в python.
Python-сообщество
- Начало
- » Python для новичков
- » Количество слов в строке
#1 Дек. 17, 2012 18:56:16
Количество слов в строке
Всем добрый вечер.
Программа на Python , высчитывающая количество пробелов,символов,слов в тексте.
Подскажите, пожалуйста, как можно узнать кол-во слов в строке?
что писать после
…
for line in f: words += line.split() f.close() number_of_words = » for i in words:
?
если конкретизировать, то нужно количество строк, где меньше 10 слов.
Отредактировано Kato (Дек. 17, 2012 19:21:11)
#2 Дек. 17, 2012 20:01:28
Количество слов в строке
скажите, плз, будет ли это работать правильно?
for i in line: for j in words: if len(words) 10: n += 1
#3 Дек. 17, 2012 21:03:10
Количество слов в строке
Kato
будет ли это работать правильно
А что вам питон говорит? Или вы ему не верите?
1 программа некорректна — не определен words
2 будет она правильно работать или нет можно решить только когда вы скажете чего она должна делать
3 количество слов в line можно определить так:
len(line.split())
Но все конечно зависит от вашего определения слова.
#4 Дек. 17, 2012 21:53:39
Количество слов в строке
ну я так понимаю человек читает из файла строки? readline не подойдет для построчного подсчета?
#5 Дек. 18, 2012 20:23:52
Количество слов в строке
нет,он открывает заданный файл(к примеру, содержащий текст параграфа из какого-то учебника), и потом выдает, сколько в нем строк, содержащих меньше 10 слов. по-мне, так он какое-то астрономическое число выдал- там текст на 1 параграф, выдает, что таких строк около 6к
#6 Дек. 19, 2012 07:42:25
Количество слов в строке
print(‘<>’.format( (lambda f=open(‘/home/sergeek/ff/python3.2-3.2.2/README’): (len (filter(lambda l: len(l) 10, map(lambda l: l.split(), iter(f.readline,»))))))()))
#7 Дек. 19, 2012 22:54:49
Количество слов в строке
sergeek, реквестирую разъяснение кода))) Можно было наваять все с одним списком + парой циклов + условие-if.. Но, у вас что-то нечто крутое, и я тоже хочу до такого уровня скилл прокачать 🙂
#8 Дек. 20, 2012 07:56:31
Количество слов в строке
- iter возвращает итератор, элементы которого являются строками файла
- map возращает список (тут для 2.7) являющийся результатом применения метода split для каждого элемента этого итератора
- filter возращает список, отфильтрованный по условию брать элементы с длиной меньше 10
- len считает длину этого списка, которая и является искомой величиной
- верхняя лямбда, просто чтобы сделать однострочник, она вызывается сразу после объявления
#9 Дек. 13, 2018 19:18:12
Количество слов в строке
Всем привет! Я новобранец на этом форуме, начал осваивать Python пару дней назад 🙂
По задаче:
Подскажите, пожалуйста, как можно узнать кол-во слов в строке?
f = open(‘C:\Users\ASUS\Desktop\For_Test.txt’, ‘r’) str = f.read() f.close() val = (len(str.split())) print(val)
По сути это вариант от doza_and, но я делал не подсматривая в ответы, чесслово Если в split не передавать параметров, то любая пробельная строка (пробел, новая строка и т.д.) считается разделителем. В явном виде можно в функцию split передать параметр “ ” (т.е. пробел), а к конечному результату прибавить 1.
Но в таком случае к тексту нужно предъявлять требования, чтоб не было двойных-тройных пробелов, слова отделялись одним пробелом, после знака препинания так же ставить один пробел.
Если у Вас исходный текст никак не отформатирован — то следует вначале поработать с ним(в том числе учитывать — являются ли числовые значения словами, например даты).
#Python начинаю осваивать
Отредактировано Mambet (Дек. 13, 2018 19:19:50)
Источник: python.su