感谢微博上@刘鑫-MarsLiu的TAG每天一个小程序。 你会如何实现上述题目的要求?
#!/usr/bin/env python # -*- coding: utf-8 -*- """ python实现任一个英文的纯文本文件,统计其中的单词出现的个数、行数、字符数 """ file_name = "movie.txt" line_counts = 0 word_counts = 0 character_counts = 0 with open(file_name, 'r') as f: for line in f: words = line.split() line_counts += 1 word_counts += len(words) character_counts += len(line) print "line_counts ", line_counts print "word_counts ", word_counts print "character_counts ", character_counts
以上代码,有哪些改进的地方?如何改进才更加pythonic?
python有1个collections库可以解决你这个问题
#!/usr/bin/python
# 这么着,您看您乐意不?
import re
file_name = 'test.txt'
lines_count = 0
words_count = 0
chars_count = 0
words_dict = {}
lines_list = []
with open(file_name, 'r') as f:
for line in f:
lines_count = lines_count + 1
chars_count = chars_count + len(line)
match = re.findall(r'[^a-zA-Z0-9]+', line)
for i in match:
# 只要英文单词,删掉其他字符
line = line.replace(i, ' ')
lines_list = line.split()
for i in lines_list:
if i not in words_dict:
words_dict[i] = 1
else:
words_dict[i] = words_dict[i] + 1
print 'words_count is', len(words_dict)
print 'lines_count is', lines_count
print 'chars_count is', chars_count
for k,v in words_dict.items():
print k,v