Подсчет строк, слов и символов в файле
Цикл for языка Python извлекает из файлового объекта данные построчно (одну строку на каждой итерации цикла). Таким образом, количество итераций цикла определит количество строк в файле.
Встроенная функция len() языка Python считает количество элементов в передаваемой в нее объекте. С ее помощью находится количество символов в каждой строке.
Строковый метод split() разбивает строку на части. По-умолчанию разделение происходит по местам расположения пробелов в строке. Таким образом, мы можем определить количество слов в каждой строке, посчитав с помощью len() слова в получившемся после применения split() списке.
На каждой итерации цикла мы должны добавлять полученные значения к переменным, хранящим общие количества строк, слов и символов.
file = open('text.txt') lines = 0 words = 0 symbols = 0 for line in file: lines += 1 words += len(line.split()) symbols += len(line) print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
Пусть содержимое файла text.txt будет таким:
one two three city town big small
Тогда программа даст следующий результат:
Lines: 3 Words: 7 Symbols: 34
Cимволами считаются не только буквы, также пробелы и переходы на новую строку (символ ‘\n’ ). Если требуется не учитывать переход на новую строку как символ, его можно «отрезать» с помощью строкового метода strip() . Делается это перед тем, как строка передается в функцию len() : symbols += len(line.strip(‘\n’)) .
Если данную задачу надо решить без использования продвинутых возможностей (встроенных функций и методов) языка программирования Python, а в рамках изучения алгоритмов или на более «низком» уровне, то программа может выглядеть так:
file = open('text.txt') text = file.read() lines = 0 words = 0 symbols = 0 in_word = False for char in text: symbols += 1 if char == '\n': lines += 1 if char != ' ' and char != '\n' and in_word == False: words += 1 in_word = True elif char == ' ' or char == '\n': in_word = False print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
Здесь на каждой итерации цикла мы имеем дело не с целой строкой, а с очередным символом. При этом увеличиваем на единицу переменную, хранящую количество символов, и, если текущий символ — это переход на новую строку, переменную для подсчета количества строк.
Для подсчета слов требуется определить в программе еще одну переменную, в которой будет храниться «сигнал», находимся ли мы внутри слова. Если это так, то очередной непробельный символ не следует считать началом нового слова и не надо увеличивать счетчик слов.
Алгоритм подсчета слов в программе выше следующий. Если текущий символ не пробел И не переход на новую строку, И ранее мы находились вне слова ( in_word == False ), то есть соблюдены все три условия сразу, значит началось новое слово. Поэтому увеличиваем счетчик слов и устанавливаем in_word в значение True . Последнее действие позволит на следующей итерации цикла, при условии обработки второй и послеющих букв слова, не соблюдаться условию in_word == False и не увеличивать счетчик слов.
Мы «сбрасываем» in_word в False , только когда встречаем пробельный символ ИЛИ переход на новую строку (любое одно из двух условий).
Программа выше, также как в первом варианте, считает переход на новую строку за символ. Если требуется его исключить, можно поместить увеличение значения счетчика символов в ветку else :
. for char in text: if char == '\n': lines += 1 else: symbols += 1 .
Если очередной символ — это переход на новую строку, увеличивается счетчик строк. В остальных случаях, — счетчик символов.
Если файл большой, то считывать сразу все его содержимое в строковую переменную ( text = file.read() ) неблагоразумно. Если читать файл посимвольно ( file.read(1) ), то условием завершения работы цикла будет момент возрата методом read() пустой строки, что означает конец файла (в других языках может быть специальный символ конца файла, доступный через идентификатор EOF — end of file).
lines = 0 words = 0 symbols = 0 in_word = False with open('text.txt') as file: while True: char = file.read(1) if char == '': break symbols += 1 if char == '\n': lines += 1 if char not in (' ', '\n') and not in_word: words += 1 in_word = True elif char in (' ', '\n'): in_word = False print("Lines:", lines) print("Words:", words) print("Symbols:", symbols)
В этом примере для открытия файла используется оператор with , который рекомендован для работы с файлами. Выражения char not in (‘ ‘, ‘\n’) and not in_word и char in (‘ ‘, ‘\n’) по смыслу аналогичны соответствующим логическим выражениям из предыдущих вариантов программы.
X Скрыть Наверх
Решение задач на Python
Подсчёт количества букв, цифр и специальных символов в введенной строке python
что значит это код и как подсчитать кол-во спецсимволов В данных строках:
print(len([i for i in stroke if i.isdigit()])) print(len([i for i in stroke if i.isalpha()]))
Эта конструкция ( [i for i in stroke] ) называется генератор. В нем вы отбираете в список те символы, которые удовлетворяют условию, указанному в генераторе. Метод isdigit() проверяет состоит ли строка из цифр, а isalpha() проверяет состоит ли строка из букв. Далее вы печатаете длину списков. Подробнее вы можете ознакомиться здесь. Я бы вам не рекомендовал начинать с генераторов, если вы не знаете работу словарей, списков, строк и их методов. Вот, вариант, понятный и, впринципе, удобный для записи:
string = '"fddfs456"' d = for i in string: if i.isalpha(): d['Буквы'] += 1 elif i.isdigit(): d['Цифры'] += 1 else: d['Спец.символы'] += 1 print(d['Цифры'], d['Буквы'], d['Спец.символы'])
Посчитать сколько букв «а» в каждом слове
Посчитать количество букв в каждом слове
Мне нужно ввести какой-нибудь текст(просто буквы с пробелами), напротив каждого слова указать.
Как посчитать число букв в каждом слове строки
подскажите , как посчитать число букв в каждом слове строки
Как посчитать количество букв в каждом слове из текста?
В файле задан текст. Нужно написать функцию, определяющую длину слова. И, применяя эту функцию, в.
Посчитать количество согласных букв в каждом втротом слове предложения
ПОМОГИТЕ КТО НИБУДЬ ПЕРЕПИСАТЬ НА С++. Добавлено через 24 минуты 54 секунды program example1;.
2421 / 1463 / 633
Регистрация: 01.11.2021
Сообщений: 2,269

Сообщение было отмечено dede1111 как решение
Решение
s = 'Взять строку из 20 слов. Посчитать сколько в каждом слове букв -а-. Составить список из этих значений' print([i.count('а') for i in s.split()])
301 / 211 / 112
Регистрация: 03.12.2016
Сообщений: 409
dede1111,
1 2 3
s = 'ggdfgfta hgayga hgft hhgfta hhhfgsaaa afafafa ah hgjf ahha ggf avgfafga frea aaaaa' \ ' jfh hgftagha hgy juuaaaha hgta ggf a' print([*map(lambda x: x.count('a'), s.split())])
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Посчитать количество букв в каждом слове и среднее количество букв во всех словах
помогите! нужно создать программу, которая считает количество букв в каждом слове и среднее.
Сколько в каждом слове букв, совпадающих с его первой буквой?
Помогите разработать программу, которая вводит строку и подсчитывает, сколько в каждом слове букв.
Подсчитать сколько в каждом слове букв совпадающих с его первой буквой
Разработать программу, которая вводит строку и подсчитывает, сколько в каждом слове букв.

Подсчитать, сколько в каждом слове букв, совпадающих с его первой буквой (for, while, do while)
Дана строка, в которой слова разделены одним пробелом. Подсчитайте, сколько в каждом слове букв.
Дано предложение, слова в нем разделены пробелом, подсчитать, сколько букв «а» в каждом слове
Дано предложение, слова в нем разделены пробелом, подсчитать, сколько букв «а» в каждом слове.
Как посчитать кол во символов в строке python
Чтобы узнать длину строки (или количество символов в строке) воспользуйтесь простой функцией len() :
>>> string = "hello" >>> len(string) 5 >>>
