计算文件python 2.7中的字符和行

时间:2013-01-19 16:50:20

标签: python python-2.7 batch-file count words

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

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 个答案:

答案 0 :(得分:11)

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

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

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

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:循环更快一点)。

答案 1 :(得分:4)

非常简单: 如果你想打印没有字符,文件中没有单词和行。并包括空间..最短的答案我觉得是我的..

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

继续编码好友......

答案 2 :(得分:0)

读取文件 -

d=fp.readlines()

字符 -

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

线 -

len(d)

话 -

sum([len(i.split()) for i in d])

答案 3 :(得分:-1)

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

element<int> e;