计数文件中单词的非模块化方法是什么?

时间:2018-10-13 13:34:14

标签: python function count

计数文件中字符数的功能方法是什么?

如果可能的话,我想避免使用任何模块。由于我的技术局限性和要求,需要进行尽可能多的优化-包括省略模块,因为在我的情况下,它们需要花费太多时间来加载(即使加载时间很短)。谢谢!

1 个答案:

答案 0 :(得分:3)

嗯,这实际上很容易做到。首先,我将介绍计数单词(可以与文件或字符串一起使用,但出于目的,我将对文件中的单词进行计数)。

我们假装这是我们文件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

return len([x for y in words for x in y])

现在,我们可以随时通过调用print(countWordsFile('ourfile.txt'))来访问该值并获取输出:

17

文件中的确切字数!我们已经实现了目标。实际上,获取字符串中的字符数非常简单:只需调用len(string)。使用len是一把双刃剑:它可以返回列表的长度或字符串的长度。总结起来,我相信这是一种非常简单且简单的方法,能够对字符串或文件中的字符或单词进行计数。希望您从本指南中学到了什么!