counting characters and lines from a file python 2

2019-01-12 07:47发布

I'm writing a program that counts all lines, words and characters from a file given as input.

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()

To some extent, the code is ok.

I don't know however how to count 'spaces' in the file. My character counter counts only letters, spaces are excluded.
Plus I'm drawing a blank when it comes to counting lines.

4条回答
欢心
2楼-- · 2019-01-12 08:30

Very Simple: If you want to print no of chars , no of words and no of lines in the file. and including the spaces.. Shortest answer i feel is mine..

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

Keep coding buddies...

查看更多
Fickle 薄情
3楼-- · 2019-01-12 08:39

You can just use len(data) for the character length.

You can split data by lines using the .splitlines() method, and length of that result is the number of lines.

But, a better approach would be to read the file line by line:

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)

Now the program will work even if the file is very large; it won't hold more than one line at a time in memory (plus a small buffer that python keeps to make the for line in in_file: loop a little faster).

查看更多
疯言疯语
4楼-- · 2019-01-12 08:44

read file-

d=fp.readlines()

characters-

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

lines-

len(d)

words-

sum([len(i.split()) for i in d])
查看更多
forever°为你锁心
5楼-- · 2019-01-12 08:45

This is one crude way of counting words without using any keywords:

#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);
查看更多
登录 后发表回答