计算文件中的字符数的函数方法是什么?
如果可能的话,我想避免使用任何模块。由于我的技术限制和需求,需要尽可能多的优化-这包括省略模块,因为在我的情况下,它们需要太多的时间来加载(即使加载时间很短)。谢谢!
发布于 2018-10-13 21:34:14
嗯,这实际上很容易做到。首先,我将介绍计算字数(它可以与文件一起使用,也可以仅用于字符串,但出于目的,我将计算文件中的字数)。
让我们假设这是文件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.']
文件中包含的那个换行符的...because。这只是一个很好的特性,这样我们就可以减少出错的可能性。
现在我们的变量n_split
包含了文件中的每个段落,没有任何空列表项。下一步是将每个段落分成每个单独的单词。为此,我们可以简单地迭代n_split
中的每一项,并在空格中拆分它:
words = []
for i in n_split:
words.append(i.split(' '))
但我们还有最后一步。看,因为我们拆分了列表中已经存在的每个列表项,所以现在我们实际上有了一个列表,其中包含每个段落的每个单词的单独列表。所以我们只需要把它们组合成一个更大的列表。为此,我们可以使用一个简单的列表理解表达式(credit)。我们可以找到这个生成的列表的len
并对其执行return
操作:
return len([x for y in words for x in y])
现在我们可以随时访问该值,只需调用print(countWordsFile('ourfile.txt'))
并获得输出:
17
文件中的确切字数!我们已经完成了我们的目标。实际上,获取字符串中的字符数非常简单:只需调用len(string)
。使用len
是一把双刃剑:它可以返回列表的长度或字符串的长度。总而言之,我相信这是一种非常简单和万无一失的方法,能够计算字符串或文件中的字符或单词。我希望你能从这篇指南中学到一些东西!
https://stackoverflow.com/questions/52793477
复制相似问题