Подсчет строк, слов и символов в файле
Цикл 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
Количество слов в символьной строке
Напишите программу, которая считает количество слов в символьной строке. Словом называется последовательность символов, отличных от пробела, которая ограничена пробелами или границами строки.
Входные данные
Входная строка содержит произвольные печатаемые символы.
Выходные данные
Программа должна вывести одно число – количество слов в переданной её строке.
Примеры
входные данные
I live in Perm.
выходные данные
4
Лучшие ответы ( 4 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Напишите программу, которая считает количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.
В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько пробелов
В заданной строке сосчитать количество слов. Разделителем слов считается один или несколько.
Количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.
Посчитать количество знаков пунктуации в символьной строке
Напишите программу, которая считает количество знаков пунктуации в символьной строке. К знакам.
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
Сообщение было отмечено rrll как решение
Решение
print(len(list(input().split())))
Регистрация: 25.04.2020
Сообщений: 17
Сообщение было отмечено rrll как решение
Решение
Добавлено через 2 минуты
print(len(input().split()))
Добавлено через 1 минуту
Сообщение от Miryz
print(len(list(input().split())))
list()
необязательна, так как
split()
сам создаёт список
290 / 130 / 58
Регистрация: 24.11.2019
Сообщений: 532
Сообщение было отмечено rrll как решение
Решение
Если по всем сторкам из файла, то так:
f = open('TEXT.txt') for line in f: print(len(list(line.split())))
Добавлено через 1 минуту
JimMor, ага, молодец!
814 / 526 / 214
Регистрация: 22.12.2017
Сообщений: 1,495
Сообщение было отмечено rrll как решение
Решение
print(input().count(' ')+1)
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Количество слов в символьной строке
Добрый день уважаемые форумчане. Пожалуйста, помогите решить задачу на си Ввести символьную.
Определить количество слов в символьной строке
дан символьный файл f.Найти самое длинное слово среди слов,вторая буква которых есть Добавлено.
В каждой строке символьной матрицы определить количество слов
Дана символьная матрица, каждая строка которой является предложением. Для каждой строки определить.
Написать программу, которая подсчитывает количество слов начинающихся на заданную букву в заданной символьной строке.
Задание: Написать программу, которая подсчитывает количество слов начинающихся на заданную букву в.
В заданной символьной строке проверить одинаково ли количество слов с символами «*» и «#»
В заданной символьной строке проверить одинаково ли количество слов с символами "*" и "#". Вот.
Удаление слов в символьной строке
Помогите, пожалуйста найти ошибку в коде. Задача такова((TASM): Написать программу, которая в.
Посчитать количество слов в строке
Для ввода строки нельзя использовать функцию cin в данном случае, поскольку эта функция осуществляет ввод строки до пробела или перевода строки. Поэтому воспользуемся методом get функции cin :
cin.get(УказательНаСтроку, МаксимальноеЧислоСимволов);
Условием окончания строки является символ с кодом равным 0 (нуль-символ, ‘\0’ ). После ввода строки организуем цикл по элементам строки до ее окончания. Перед циклом убираем пробелы, введенные в начале строки (до первого слова). Условием определения следующего слова в строке является наличие какого-то символа после пробела. Именно это условие увеличивает счетчик count на 1.
Реализация на C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Результат выполнения
Подсчёт количества букв, цифр и специальных символов в введенной строке 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['Спец.символы'])