统计一个文本的字符、单词数
2015-03-26 13:27
369 查看
文本操作是最常见的,以例子的形式来驱动程序的编写
例一:统计一篇文章或计算机文件里的字符或单词数
以上为未使用正则表达式的版本
例二:针对之前写的C语言版本,统计单词数
例一:统计一篇文章或计算机文件里的字符或单词数
#-*-encoding:utf-8-*- import time keep = {'a','b','c','d','e','f','g','h','i','j','k', 'l','m','n','o','p','q','r','s','t','u','v', 'w','x','y','z',' ','-',"'"} def normalize(s): #大写转换成小写,并且剔除数字等开头或不在列表中的字符,返回正常字符串 result = '' for c in s.lower(): if c in keep: result +=c return result def make_freq_dict(s): #计算频率次数,将字符串转化成次数字典 s = normalize(s) words = s.split() d = {} for w in words: if w in d: d[w] +=1 else: d[w] = 1 return d def print_file_stats(fname): s = open(fname,'r').read() num_chars = len(s) num_lines = s.count('\n') d = make_freq_dict(s) #一层一层往上调用函数 num_words = sum(d[w] for w in d) lst = [(d[w],w) for w in d] lst.sort() lst.reverse() print("The file '%s' has: " % fname) print(" %s characters " % num_chars) print(" %s lines " % num_lines) print(" %s words" % num_words) print("\nThe top 10 most frequent words are:") i=1 for count,word in lst[:10]:#将字典转换成元组 print('%2s. %4s个 %s' % (i,count,word)) i +=1 def main(): start = time.time() print_file_stats('bill.txt') end = time.time() use = end - start print('一共花了%s 秒的时间' % use) if __name__=='__main__': main()
以上为未使用正则表达式的版本
例二:针对之前写的C语言版本,统计单词数
#include "stdio.h" int count_word(char *str); void main() { char str1[80]; int sum=0; puts("please enter a string"); gets(str1); sum=count_word(str1); //返回的count就是sum printf("there are %d words in this sentence",sum); } int count_word(char *str) { int count,flag; char *p; count=0; flag=0; p=str; while(*p!='\0')/*当字符串没有到结尾的时候,重头到尾的循环*/ { if(*p==' ')/*假如字符串遇到空格,就将flag清零,同时可以过滤掉多余的空格*/ flag=0; else if(flag==0)/*当字符串不是空格时,假如flag为0,那么计算器加1,既是遇到空格后的第一个字符时*/ { flag=1;/*将flag标记回1,这样在遇到第一个字符后的字符时可以将他过滤掉,直到遇到空格时,在清零*/ count++; //count就是统计单词数的变量。其实就是单词数的第一个字符,后面的字符都没有统计了 } p++; // 这里是抛开上面的flag=0,继续加一。没有遇到空格的时候 。直到继续遇到空格或结尾的时候,才不加一了。 } return count; }
相关文章推荐
- c++实现文本中英文单词和汉字字符的统计
- (字符串的模式匹配4.7.8)UVA 10008 What's Cryptanalysis?(统计文本中某一个字符的出现的次数,需要从小到大排序&&同次数的按字段序排序)
- 用IO流编写一个程序,统计并输出某个文本文件中“a”字符的个数
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- linux bash shell 统计一个文本中 单词 频率的 脚本详解
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中。
- linux bash shell 统计一个文本中 单词 频率的 脚本详解
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- 编译器DIY之———统计英文文本中的单词数,字符数和行数
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)
- c++实现文本中英文单词和汉字字符的统计
- 在一个文本文件中的单词统计频率并打印前十个
- 把当前文件中的所有文本拷贝,存入一个txt文件,统计每个字符出现的次数并输出
- // 2、有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- (无bug版)有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。
- 有一段文本,将文本中的所有单词,存放到一个字符指针数组中(要求每个单词内存恰好)。