Найти - Пользователи
Полная версия: Количество слов в строке
Начало » Python для новичков » Количество слов в строке
1 2
Kato
Всем добрый вечер.
Подскажите, пожалуйста, как можно узнать кол-во слов в строке?
что писать после

for line in f:
    words += line.split()
f.close()
number_of_words = ''
for i in words:
?
если конкретизировать, то нужно количество строк, где меньше 10 слов.
Kato
скажите, плз, будет ли это работать правильно?
for i in line:
    for j in words:
        if len(words) < 10:
            n += 1
doza_and
Kato
будет ли это работать правильно
А что вам питон говорит? Или вы ему не верите?
1 программа некорректна - не определен words
2 будет она правильно работать или нет можно решить только когда вы скажете чего она должна делать
3 количество слов в line можно определить так:
len(line.split())
Но все конечно зависит от вашего определения слова.
Encore_1908
ну я так понимаю человек читает из файла строки? readline не подойдет для построчного подсчета?
Kato
нет,он открывает заданный файл(к примеру, содержащий текст параграфа из какого-то учебника), и потом выдает, сколько в нем строк, содержащих меньше 10 слов. по-мне, так он какое-то астрономическое число выдал- там текст на 1 параграф, выдает, что таких строк около 6к
sergeek
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,''))))))()))
boltayka
sergeek, реквестирую разъяснение кода))) Можно было наваять все с одним списком + парой циклов + условие-if.. Но, у вас что-то нечто крутое, и я тоже хочу до такого уровня скилл прокачать :)
sergeek
boltayka
она у меня в функциональном стиле просто, плюс оформление закошено под лисп (это я так, может быть, неудачно пошутил). В питоне оно невыразительно смотрится, поэтому так обычно не делают. Разъяснение не нужно на самом деле, т.к. с этими отступами должно читаться легко, вы наверное просто не знаете что-нибудь из map,filter или iter. Читать надо с конца:
  • iter возвращает итератор, элементы которого являются строками файла
  • map возращает список (тут для 2.7) являющийся результатом применения метода split для каждого элемента этого итератора
  • filter возращает список, отфильтрованный по условию брать элементы с длиной меньше 10
  • len считает длину этого списка, которая и является искомой величиной
  • верхняя лямбда, просто чтобы сделать однострочник, она вызывается сразу после объявления
Mambet
Всем привет! Я новобранец на этом форуме, начал осваивать 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.
Но в таком случае к тексту нужно предъявлять требования, чтоб не было двойных-тройных пробелов, слова отделялись одним пробелом, после знака препинания так же ставить один пробел.
Если у Вас исходный текст никак не отформатирован - то следует вначале поработать с ним(в том числе учитывать - являются ли числовые значения словами, например даты).
JOHN_16
Mambet
Я новобранец на этом форуме
видимо в интернете тоже. Так делать не надо
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB