1

我正在编写一个程序,它计算作为输入的文件中的所有行、单词和字符。

import string

def main():
    print "Program determines the number of lines, words and chars in a file."
    file_name = raw_input("What is the file name to analyze? ")

    in_file = open(file_name, 'r')
    data = in_file.read()

    words = string.split(data)

    chars = 0
    lines = 0
    for i in words:
        chars = chars + len(i)

    print chars, len(words)


main()

在某种程度上,代码是可以的。

但是我不知道如何计算文件中的“空格”。我的字符计数器只计算字母,不包括空格。
另外,在计算行数时,我是在画一个空白。

4

4 回答 4

11

您可以只使用len(data)字符长度。

您可以data使用该.splitlines()方法按行拆分,该结果的长度是行数。

但是,更好的方法是逐行读取文件:

chars = words = lines = 0
with open(file_name, 'r') as in_file:
    for line in in_file:
        lines += 1
        words += len(line.split())
        chars += len(line)

现在,即使文件很大,程序也可以运行;它在内存中一次不会保存超过一行(加上一个小缓冲区,python 保留以使for line in in_file:循环更快一点)。

于 2013-01-19T16:52:07.760 回答
4

非常简单:如果要打印文件中的字符数、单词数和行数。包括空格..我觉得最短的答案是我的..

import string
data = open('diamond.txt', 'r').read()
print len(data.splitlines()), len(string.split(data)), len(data)

继续编码伙伴...

于 2014-04-15T20:38:42.807 回答
0

读取文件——

d=fp.readlines()

人物-

sum([len(i)-1 for i in d])

线-

len(d)

字-

sum([len(i.split()) for i in d])
于 2017-08-31T07:12:10.297 回答
-1

这是在不使用任何关键字的情况下计算单词的一种粗略方法:

#count number of words in file
fp=open("hello1.txt","r+");
data=fp.read();
word_count=1;
for i in data:
    if i==" ":
        word_count=word_count+1;
    # end if
# end for
print ("number of words are:", word_count);
于 2017-02-06T16:29:33.273 回答