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

如何在Python中读取字符数、行数和单词数,python,lines,words,Python,Lines,Words,这是代码,我需要从diamond.txt打印文本中的行、字符和单词 文本包含了这一点 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 nu

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

文本包含了这一点

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)
钻石有着非凡的魅力 光学特性。 因为它非常 刚性晶格,它可以 被极少数污染 杂质的种类, 如硼和 氮气。与…结合 广泛的透明度,这 结果一目了然,, 无色外观 大多数天然钻石。 行和字的输出正确,但文档中的字母数为238

正确的输出应该是279。

一个简单的解决方案

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. 或更短的解决方案

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

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

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

您认为应该是279吗?@padraiccnningham计算每个字符得到279@SteveJessop你能提供修改后的代码吗?正如你所知道的,在这里不鼓励提出需要紧急处理的问题-所有问题在这里都被平等对待,要求特别关注可能会赢得反对票。谢谢非常感谢。这有帮助!:)@Padraic Cunningham这是典型的python方法。@Padraic Cunningham和我认为典型的python方法早在你之前就被提出了。@Padraic Cunningham使用“sum”作为你的个人解决方案有多久了?
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