感谢微博上@刘鑫-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