使用Python统计文本文件中的行数、单词数和字符数
我在用Python统计文本文件中某些元素时遇到了一些困难。我学习Python已经几个月了,以下这些函数我都比较熟悉:
- raw_input
- open
- split
- len
- rsplit()
这是我目前写的代码:
fname = "feed.txt"
fname = open('feed.txt', 'r')
num_lines = 0
num_words = 0
num_chars = 0
for line in feed:
lines = line.split('\n')
现在我不知道接下来该怎么做。我觉得最合理的方式是先统计行数,再统计每一行中的单词数量,最后统计每个单词中的字符数量。但是我遇到的问题是,想要一次性完成所有必要的操作,而不想每次都重新打开文件来单独执行每个操作。
5 个回答
2
当然可以!请看下面的内容:
在编程中,有时候我们需要让程序在特定的条件下执行某些操作。比如说,当用户点击一个按钮时,我们希望程序能做出反应。这种情况下,我们就会用到“事件”这个概念。
事件就像是生活中的一些事情,比如你按下电灯开关,灯就亮了。编程里的事件也是类似的,当某个特定的事情发生时,程序就会执行相应的代码。
为了让程序知道什么时候发生了事件,我们需要给它设置一些“监听器”。可以把监听器想象成一个守门员,它一直在关注着某个特定的动作,比如用户点击按钮。当这个动作发生时,守门员就会通知程序去执行相应的操作。
总之,事件和监听器的结合让我们的程序能够对用户的操作做出反应,增强了用户体验。
fname = "feed.txt"
feed = open(fname, 'r')
num_lines = len(feed.splitlines())
num_words = 0
num_chars = 0
for line in lines:
num_words += len(line.split())
3
这里有一些可能对你有帮助的函数:
open("file").read()
这个函数可以一次性读取整个文件的内容。'string'.splitlines()
这个函数可以把字符串按行分开(并且会忽略空行)。
通过使用 len()
和这些函数,你可以完成你想做的事情。
26
试试这个:
fname = "feed.txt"
num_lines = 0
num_words = 0
num_chars = 0
with open(fname, 'r') as f:
for line in f:
words = line.split()
num_lines += 1
num_words += len(words)
num_chars += len(line)
回到你的代码:
fname = "feed.txt"
fname = open('feed.txt', 'r')
这样做有什么意义呢?fname
最开始是一个字符串,后来又变成了一个文件对象。你其实并没有用到第一行定义的那个字符串,而且一个变量应该只用来表示一种东西:要么是字符串,要么是文件对象。
for line in feed:
lines = line.split('\n')
line
是从文件中读取的一行内容。把它用 split('\n')
分开是没有意义的。