Ну, это на самом деле довольно легко сделать.Сначала я расскажу о подсчете слов (который можно использовать с файлом или просто строкой, но для цели я буду подсчитывать слова в файле).
Давайте представим, что это содержимое нашего файлаourfile.txt
:
Hello. This is a file.
Not the most exciting file.
Just be glad it isn't lorem ipsum.
Давайте начнем с определения нашей функции и чтения из нашего текстового файла:
def countWordsFile(file):
with open(file) as f:
query = file.read()
Отлично, теперь у нас есть содержимое файла!Далее мы собираемся определить новую переменную с именем n_split
.Эта переменная будет разбивать строку на каждый \n
.Но что происходит, когда у нас есть разрывы строк, это может генерировать пустые значения списка.Поэтому мы используем простую filter
функцию для удаления пустых значений списка:
n_split = list(filter(None, query.split('\n')))
# Splits at every \n, and removes empty list values caused by line breaks
Когда мы удаляем все пустые элементы списка, n_split
теперь выглядит так:
['Hello. This is a file.', 'Not the most exciting file.', 'Just be glad it isn't lorem ipsum.']
ДляДля сравнения, если бы мы не удалили пустые элементы списка, n_split
выглядело бы так:
['Hello. This is a file.', '', 'Not the most exciting file.', 'Just be glad it isn't lorem ipsum.']
... из-за одного разрыва строки, включенного в файл.Это просто хорошая возможность, чтобы мы могли уменьшить вероятность ошибок.
Теперь наша переменная n_split
содержит каждый абзац в файле без каких-либо пустых элементов списка.Далее следует разделить каждый абзац на каждое отдельное слово.Чтобы сделать это, мы можем просто перебрать каждый элемент в n_split
и разбить его на пробелы:
words = []
for i in n_split:
words.append(i.split(' '))
Но у нас еще есть последний шаг.Понимаете, поскольку мы разделяем каждый элемент списка, который уже находится внутри списка, теперь у нас фактически есть список, который содержит отдельные списки каждого слова для каждого абзаца.Поэтому мы просто должны объединить их в один большой список.Для этого мы можем использовать простое выражение понимания списка ( credit ).Мы можем найти len
этого сгенерированного списка и просто return
it:
return len([x for y in words for x in y])
И теперь мы можем получить доступ к этому значению в любое время, просто вызвав print(countWordsFile('ourfile.txt'))
и получив вывод:
17
Точное количество слов в файле!Мы достигли нашей цели.На самом деле очень просто получить количество символов в строке: просто наберите len(string)
.Использование len
является обоюдоострым мечом: оно может возвращать длину списка или длину строки.В заключение, я считаю, что это очень простой и надежный способ подсчета символов или слов в строке или из файла.Я надеюсь, что вы узнали что-то из этого руководства!