如何读取 Python 中的字符数、行数和单词数

How to read number of characters, lines and words in Python

from string import lowercase
from itertools import groupby

lines = [line.strip() for line in open('diamond.txt')] 
count=0
sumofwords=0
letters=[]

def numberoflines(lines):
       return len(lines)

def numberofletters(letters):
       count=0
       for l in letters:
             for ll in l:
               count=count+len(ll)
       return count

for s in lines:
      count=count+1
      counts = [(len(list(cpart))) for c,cpart in groupby(s) if c == ' ']    
      sumofwords=sumofwords+len(counts)+1
      letters.append(s.split())

print "Number of lines in document ",numberoflines(lines),"\n"    
print "Number of words in document ",sumofwords,"\n"
print "Number of letters in document ",numberofletters(letters)

这是代码,我需要打印来自diamond.txt的文本中的行、字符和单词。

文中包含这个。

Diamond has remarkable
optical characteristics.
Because of its extremely
rigid lattice, it can be
contaminated by very few
types of impurities,
such as boron and
nitrogen. Combined with
wide transparency, this
results in the clear,
colorless appearance of
most natural diamonds.

行和词给出了正确的输出,但文档中的字母数为 238。

正确的输出应该是279。

一个简单的解决方案

lines = [line for line in open('diamond.txt')]
wordscnt = 0
lettercnt = 0
for s in lines:
    wordscnt+=len(s.split())
    lettercnt+=len(s)
print "Number of lines in document ",len(lines),"\n"
print "Number of words in document ",wordscnt,"\n"
print "Number of letters in document ",lettercnt

或更短的解决方案

lines = [line for line in open('diamond.txt')]
wordscnt = sum( len(l.split()) for l in lines)
lettercnt = sum( len(l) for l in lines)
print "Number of lines in document ",len(lines),"\n"
print "Number of words in document ",wordscnt,"\n"
print "Number of letters in document ",lettercnt

您在拆分行后计算字母,这意味着您不计算空格。 您可以简单地尝试 len(text) 来获取字母数。

我认为你混淆了没有空格的字母数实际上是 238,而你期望的答案是包括空格在内的整个文本的长度是 279,顺便说一句,我更喜欢你使用 str.replace() 删除文本中的空格