文档词频分析小工具

来源:互联网 发布:java android api 编辑:程序博客网 时间:2024/05/12 15:37

今天正打算看代码,忽然感觉一个代码分析的工具还是必不可少……之前下载的Understand什么的,用起来各种不好用是真的……所以今天拿python先写了一个词频分析的小工具,花了好几个小时 = =# 因为写的时候发现python好多函数也并不知道,一边写一遍百度。然而还是有点着急,好多模块并没有弄清楚,先mark一下以后再说:
1. codes: 以其他格式读写文件;但是没成功,我后来用 file.read().decode(‘utf-8’)也不好用,说是ascii码转换不了什么的种种;
2. re:正则表达式;因为要匹配的字符还包含各种括号引号斜杠,也是没有用好,干脆直接split循环暴力解决了最后;
3. 最后输出的时候中文字符串全部没有输出,取而代之输出到目标文件中的是一个空字符,而且显示这个空字符的数量是最庞大的了,所以应该就是代表中文字符串


好了进入正文
不贴代码也不写注释了因为9点了宝宝要回家了嗷嗷嗷 0.0 ……

全局配置……

g_readfilepath = "E:/XXX/"f_writefilename = "E:/test.txt"g_file_postfix = ('.cpp', '.h', '.ipp', )g_split_char = ('!', ' ', '#', '"', "'", '&', ')', '(', '+', '*', '-', ',', '/', '.', ';', ':', '=', '<', '>', '[', ']', '\\', '{', '}', '|', '~', )g_split_re = '[!#&)(+*-,/.;:=<>}|~]'g_wordchar = frozenset(('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', '', 'v', 'w', 'x', 'y', 'z',     'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', '', 'V', 'W', 'X', 'Y', 'Z',     '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '_', ))g_ifIgnoreSysWord = Trueg_word = frozenset(('const', 'if', 'return', 'void', 'virtual', 'class',     'int', 'char',     'true', 'false', ))g_ifIgnoreDigit = True

类……

class FileNode(object):passclass FileTree(FileNode):pass

函数……

def ifCareFile(filename):passdef splitStr(string):passdef analysisUnwordchar(file_tree):pass #这个只用来输出上边的g_split_chardef analysisWord(file_tree):passdef printSort_file(analysisRes, writefilename):passdef main():    file_tree = FileTree(g_readfilepath)    ana_res = analysisWord(file_tree)    printSort_file(ana_res, f_writefilename)

我分析了一个文件,速度居然还挺快……是我小看python了……

 - 2320586GetWndManager - 38765getResourceManager - 37081cacheUIR - 36754AddCustomizedPosition - 21516parent - 15876CLRect - 15831AddCustomizedRect - 14823id - 14755infoMap - 13139Create - 13003ParseXml - 12554InitID - 12454InitPosition - 12450this - 11563i - 11056。。。

统计后感:

  1. 我发现用到的最多的是死代码……也就是程序生成的那部分代码……如何找到关键函数还是任重道远啊
  2. 0乃数字之最!其次是1280和768……其次是1 =。=
  3. 前四个系统关键字是 void、int、if、virtual
  4. 下一步可以开始考虑分析类层次和类调用了,因为顺便输出了下某个大文件夹下所有文件数量发现也不过2000来个~
0 0
原创粉丝点击