如何统计并打印文件中每行的单词数?

0 投票
2 回答
5053 浏览
提问于 2025-04-18 09:15

我想要计算一个文件中每一行的总单词数,并把结果打印出来。我试过了:

with codecs.open('v.out','r',encoding='utf-8') as f:
    for line in f.readlines():
        words = len(line.strip(' '))
        print words

输入文件是:

hello 
try it
who knows
it may work

我得到的输出是:

6
7
10
12

但我需要的是:

1 
2 
2
3

有没有什么函数可以使用?我需要把文件中每一行的第一个单词打印出来,然后把中间的单词和最后一个单词分别打印到不同的文件里。

2 个回答

4

你现在是在去掉字符串两端的空格,而不是在分割单词。你现在是在计算剩下的字符,而不是单词。

可以使用str.split()来代替:

words = len(line.split())

这个方法不需要任何参数,或者你可以用None;它会去掉字符串两端的空格,并且会根据任意宽度的空格来分割,这样你就能得到单词了:

>>> 'it may work'.split()
['it', 'may', 'work']
>>> len('it may work'.split())
3
3

你已经很接近了。这行代码:

words = len(line.strip(' '))

应该改成:

words = len(line.split(' '))

strip 是用来去掉字符串开头和结尾的字符,而 split 则是把字符串拆分成一个字符串列表。

撰写回答