Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 17, 2012 18:56:16

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество слов в строке

Всем добрый вечер.
Подскажите, пожалуйста, как можно узнать кол-во слов в строке?
что писать после

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

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество слов в строке

скажите, плз, будет ли это работать правильно?

for i in line:
    for j in words:
        if len(words) < 10:
            n += 1

Офлайн

#3 Дек. 17, 2012 21:03:10

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Количество слов в строке

Kato
будет ли это работать правильно
А что вам питон говорит? Или вы ему не верите?
1 программа некорректна - не определен words
2 будет она правильно работать или нет можно решить только когда вы скажете чего она должна делать
3 количество слов в line можно определить так:
len(line.split())
Но все конечно зависит от вашего определения слова.



Офлайн

#4 Дек. 17, 2012 21:53:39

Encore_1908
Зарегистрирован: 2012-12-04
Сообщения: 22
Репутация: +  1  -
Профиль   Отправить e-mail  

Количество слов в строке

ну я так понимаю человек читает из файла строки? readline не подойдет для построчного подсчета?

Офлайн

#5 Дек. 18, 2012 20:23:52

Kato
Зарегистрирован: 2012-11-26
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество слов в строке

нет,он открывает заданный файл(к примеру, содержащий текст параграфа из какого-то учебника), и потом выдает, сколько в нем строк, содержащих меньше 10 слов. по-мне, так он какое-то астрономическое число выдал- там текст на 1 параграф, выдает, что таких строк около 6к

Офлайн

#6 Дек. 19, 2012 07:42:25

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Количество слов в строке

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

boltayka
От:
Зарегистрирован: 2009-10-07
Сообщения: 68
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество слов в строке

sergeek, реквестирую разъяснение кода))) Можно было наваять все с одним списком + парой циклов + условие-if.. Но, у вас что-то нечто крутое, и я тоже хочу до такого уровня скилл прокачать :)

Офлайн

#8 Дек. 20, 2012 07:56:31

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Количество слов в строке

boltayka
она у меня в функциональном стиле просто, плюс оформление закошено под лисп (это я так, может быть, неудачно пошутил). В питоне оно невыразительно смотрится, поэтому так обычно не делают. Разъяснение не нужно на самом деле, т.к. с этими отступами должно читаться легко, вы наверное просто не знаете что-нибудь из map,filter или iter. Читать надо с конца:

  • iter возвращает итератор, элементы которого являются строками файла
  • map возращает список (тут для 2.7) являющийся результатом применения метода split для каждого элемента этого итератора
  • filter возращает список, отфильтрованный по условию брать элементы с длиной меньше 10
  • len считает длину этого списка, которая и является искомой величиной
  • верхняя лямбда, просто чтобы сделать однострочник, она вызывается сразу после объявления

Офлайн

#9 Дек. 13, 2018 19:18:12

Mambet
Зарегистрирован: 2018-12-13
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Количество слов в строке

Всем привет! Я новобранец на этом форуме, начал осваивать 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)

Офлайн

#10 Дек. 14, 2018 14:48:03

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

Количество слов в строке

Mambet
Я новобранец на этом форуме
видимо в интернете тоже. Так делать не надо



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version