首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >统计文件中单词的非模块化方法是什么?

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

Stack Overflow用户
提问于 2018-10-13 21:34:14
回答 1查看 92关注 0票数 -2

计算文件中的字符数的函数方法是什么?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-13 21:34:14

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

让我们假设这是文件ourfile.txt的内容

代码语言:javascript
复制
Hello. This is a file.

Not the most exciting file.
Just be glad it isn't lorem ipsum.

让我们首先定义我们的函数并读取我们的文本文件:

代码语言:javascript
复制
def countWordsFile(file):
   with open(file) as f:
      query = file.read()

太好了,现在我们有了文件的内容!接下来,我们将定义一个名为n_split的新变量。此变量将在每个\n处拆分字符串。但发生的情况是,当我们有换行符时,它可能会生成空列表值。所以我们使用一个简单的filter函数来删除空列表值:

代码语言:javascript
复制
n_split = list(filter(None, query.split('\n'))) 
# Splits at every \n, and removes empty list values caused by line breaks

当我们删除所有空列表项时,n_split现在看起来如下所示:

代码语言:javascript
复制
['Hello. This is a file.', 'Not the most exciting file.', 'Just be glad it isn't lorem ipsum.'] 

作为比较,如果我们没有删除空列表项,n_split将如下所示:

代码语言:javascript
复制
['Hello. This is a file.', '', 'Not the most exciting file.', 'Just be glad it isn't lorem ipsum.'] 

文件中包含的那个换行符的...because。这只是一个很好的特性,这样我们就可以减少出错的可能性。

现在我们的变量n_split包含了文件中的每个段落,没有任何空列表项。下一步是将每个段落分成每个单独的单词。为此,我们可以简单地迭代n_split中的每一项,并在空格中拆分它:

代码语言:javascript
复制
words = []
for i in n_split:
   words.append(i.split(' '))

但我们还有最后一步。看,因为我们拆分了列表中已经存在的每个列表项,所以现在我们实际上有了一个列表,其中包含每个段落的每个单词的单独列表。所以我们只需要把它们组合成一个更大的列表。为此,我们可以使用一个简单的列表理解表达式(credit)。我们可以找到这个生成的列表的len并对其执行return操作:

代码语言:javascript
复制
return len([x for y in words for x in y])

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

代码语言:javascript
复制
17

文件中的确切字数!我们已经完成了我们的目标。实际上,获取字符串中的字符数非常简单:只需调用len(string)。使用len是一把双刃剑:它可以返回列表的长度或字符串的长度。总而言之,我相信这是一种非常简单和万无一失的方法,能够计算字符串或文件中的字符或单词。我希望你能从这篇指南中学到一些东西!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52793477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档