. : : ClassiClub ForuM : : .

会员中心 论坛帮助 日历事件 标记论坛已读
返回   精品技术论坛 » 技术论坛 » 『软件使用』

『软件使用』: 电脑软件推荐, 电脑软件使用, 经验分享



发表新主题 关闭主题
 
主题工具
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#1 旧 2005-09-02, 14:52:20 默认 【原创】cmd脚本-文本英文单词与中文字分类汇总
hitme 当前离线  

闲来无聊,瞎搞一个,测试

功能:统计每个单词在文本中出现的次数
用法:
cmd下

word_num 文件名



代码:
@echo off

cls
echo.
echo.-----------------------------
echo....统计中.....请少等...
echo.-----------------------------
echo.
if "%*"=="" goto :syntax
if "%*"=="/?" goto :syntax
if "%*"=="/" goto :syntax
if "%*"=="?" goto :syntax
if /i "%*"=="/help" goto :syntax


:: /* 拆解文本为每行一单词 */
setlocal ENABLEDELAYEDEXPANSION
del end.txt tmp*.txt 2>nul
set /a m=0
:loop
set /a m+=1
for /f "tokens=%m% delims=.,:;/[]()!'@=\<>	 " %%i in (%*) do (
			set n=%%i
			set n=!n:"=!
			echo.1 !n!>>tmp.txt	
)
if "%m%"=="200" goto:add
goto:loop
endlocal


:add 
:: /* 分类汇总 */
setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=1,2" %%i in ('sort tmp.txt^|findstr /r "^1\ [a-z][A-Z]"') do (
			if /i "!y!"=="%%j" (
					set /a x+=1) else (	if "!x!" neq "" (
								if !x! lss 10 (echo.000!x! !y!>>tmp1.txt) else (
								if !x! lss 100 (echo.00!x! !y!>>tmp1.txt) else (
								if !x! lss 1000 (echo.0!x! !y!>>tmp1.txt))))
								set y=%%j
								set x=%%i)
					
)
if !x! lss 10 (echo.000!x! !y!>>tmp1.txt) else (
if !x! lss 100 (echo.00!x! !y!>>tmp1.txt) else (
if !x! lss 1000 (echo.0!x! !y!>>tmp1.txt)))
endlocal
sort /r tmp1.txt>tmp2.txt


:ex
:: /* 大写转小写 */
setlocal ENABLEDELAYEDEXPANSION
for /f "delims=" %%i in (tmp2.txt) do (
			set ex=%%i
			set ex=!ex:A=a!
			set ex=!ex:B=b!
			set ex=!ex:C=c!
			set ex=!ex:D=d!
			set ex=!ex:E=e!
			set ex=!ex:F=f!
			set ex=!ex:G=g!
			set ex=!ex:H=h!
			set ex=!ex:I=i!
			set ex=!ex:J=j!
			set ex=!ex:K=k!
			set ex=!ex:L=l!
			set ex=!ex:M=m!
			set ex=!ex:N=n!
			set ex=!ex:O=o!
			set ex=!ex:P=p!
			set ex=!ex:Q=q!
			set ex=!ex:R=r!
			set ex=!ex:S=s!
			set ex=!ex:T=t!
			set ex=!ex:U=u!
			set ex=!ex:V=v!
			set ex=!ex:W=w!
			set ex=!ex:X=x!
			set ex=!ex:Y=y!
			set ex=!ex:Z=z!
			echo.!ex!>>end.txt
)
del tmp*.txt
start end.txt

:syntax
cls
echo.
echo.word_num.cmd
echo.==========================================
echo.written by hitme 2005.9.2
echo.用法:
echo.	word_num 文件名	
echo.
echo.例如:
echo.	word_num License.txt
echo.==========================================
统计结果样式:
代码:
0152 fixed
0108 added
0094 in
0091 to
0070 will
0069 not
0062 problem
0059 the
0056 bar
0054 support
0054 at
0053 and
0050 for
0047 menu
0046 tab
0042 when
0041 new
0040 option
0040 changed
0038 myie2
0037 plugin
0036 favorite
0035 toolbar
0035 on
上传的附件
文件类型: rar word_num.rar (850 字节, 60 次查看)

此帖于 2005-09-03 21:36:45 被 hitme 编辑. .
kanbol
 
kanbol 的头像
核心会员
 
资 料:
注册日期: Nov 2004
帖子: 2,769 声望值: 3
精华: 7,解答: 1
#2 旧 2005-09-02, 15:09:36 默认
kanbol 当前离线  

精王又出手了 这个脚本蛮有用的


阳光总在风雨后
marking
 
marking 的头像
支柱会员
 
资 料:
注册日期: Aug 2001
帖子: 7,779 声望值: 4
精华: 2,解答: 5
#3 旧 2005-09-02, 16:05:16 默认
marking 当前离线  

可望不可及啊!!高山仰止!!!!


SarsMark@hotmail.com
romano
 
romano 的头像
超级会员
 
资 料:
注册日期: Aug 2002
帖子: 1,334 声望值: 3
精华: 0,解答: 6
#4 旧 2005-09-02, 21:01:37 默认
romano 当前离线  

代码:
fcnt = file('test.txt').read().lower() #读入文件,把字符串中大写字母改为小写
flist = ["%s,%s" % (fcnt.count(k), k) for k in set(fcnt.split())] #统计词频
flist.sort(lambda a,b: int(b.split(',')[0]) - int(a.split(',')[0])) #排序
print '\n'.join(flist[:7]) #输出前七项
test.txt内容
代码:
Abstract
    Long time Pythoneer Tim Peters succinctly channels the BDFL's
    guiding principles for Python's design into 20 aphorisms, only 19
    of which have been written down.


The Zen of Python
    Beautiful is better than ugly.
    Explicit is better than implicit.
    Simple is better than complex.
    Complex is better than complicated.
    Flat is better than nested.
    Sparse is better than dense.
    Readability counts.
    Special cases aren't special enough to break the rules.
    Although practicality beats purity.
    Errors should never pass silently.
    Unless explicitly silenced.
    In the face of ambiguity, refuse the temptation to guess.
    There should be one-- and preferably only one --obvious way to do it.
    Although that way may not be obvious at first unless you're Dutch.
    Now is better than never.
    Although never is often better than *right* now.
    If the implementation is hard to explain, it's a bad idea.
    If the implementation is easy to explain, it may be a good idea.
    Namespaces are one honking great idea -- let's do more of those!
输出结果
代码:
58,a
14,be
11,is
11,it
9,at
8,better
8,than
顺便问一下, 楼主的id, 意思不就是“扎我”么 :qqb014:
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#5 旧 2005-09-03, 13:08:26 默认
hitme 当前离线  

引用:
作者: romano
顺便问一下, 楼主的id, 意思不就是“扎我”么 :qqb014:
是啊是啊,欺负我骑自行车,老开宝来撇我。。。扎你胎,扎你胎

结果是错的。。。。hahaha

代码:
0010 is
0008 than
0008 better
0007 the
0005 to
0004 of
0003 never
0003 it
0003 idea
0003 be
0003 although
0002 way
0002 unless
0002 special
0002 should
0002 python
0002 only
0002 one
0002 now
0002 may
0002 implementation
0002 if
0002 explain
0002 do
0002 complex
0001 zen
0001 you
0001 written
0001 which
0001 ugly
0001 time
0001 tim
0001 those
0001 there
0001 that
0001 temptation
0001 succinctly
0001 sparse
0001 simple
0001 silently
0001 silenced
0001 rules
0001 refuse
0001 readability
0001 re
0001 pythoneer
0001 purity
0001 principles
0001 preferably
0001 practicality
0001 peters
0001 pass
0001 one--
0001 often
0001 obvious
0001 not
0001 nested
0001 namespaces
0001 more
0001 long
0001 let
0001 into
0001 in
0001 implicit
0001 honking
0001 have
0001 hard
0001 guiding
0001 guess
0001 great
0001 good
0001 for
0001 flat
0001 first
0001 face
0001 explicitly
0001 explicit
0001 errors
0001 enough
0001 easy
0001 dutch
0001 down
0001 design
0001 dense
0001 counts
0001 complicated
0001 channels
0001 cases
0001 break
0001 been
0001 beautiful
0001 beats
0001 bdfl
0001 bad
0001 at
0001 aren
0001 are
0001 aphorisms
0001 and
0001 ambiguity
0001 abstract
0001 *right*
0001 --obvious
bucker
 
bucker 的头像
热心会员
 
资 料:
注册日期: Sep 2001
帖子: 61,853 声望值: 16
精华: 2,解答: 16
#6 旧 2005-09-03, 13:47:45 默认
bucker 当前离线  

嗯,好东西,存一份


壮志雄心化双翼,碧海蓝天任我翔
romano
 
romano 的头像
超级会员
 
资 料:
注册日期: Aug 2002
帖子: 1,334 声望值: 3
精华: 0,解答: 6
#7 旧 2005-09-03, 14:15:29 默认
romano 当前离线  

漏了一个...
PHP 代码:
fl file('test.txt').read().lower().split() 
flist = ["%s,%s" % (fl.count(k), k) for k in set(fl)] 
flist.sort(lambda a,bint(b.split(',')[0]) - int(a.split(',')[0])) 
print 
'\n'.join(flist[:7]) #输出前七项 
代码:
 10,is
8,better
8,than
7,the
5,to
4,of
3,be
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#8 旧 2005-09-03, 14:21:01 默认
hitme 当前离线  

引用:
作者: romano
漏了一个...
PHP 代码:
fl file('test.txt').read().lower().split() 
flist = ["%s,%s" % (fl.count(k), k) for k in set(fl)] 
flist.sort(lambda a,bint(b.split(',')[0]) - int(a.split(',')[0])) 
print 
'\n'.join(flist[:7]) #输出前七项 
代码:
 10,is
8,better
8,than
7,the
5,to
4,of
3,be
呵呵。。。编译个exe吧,python执行效率要高多了。。
romano
 
romano 的头像
超级会员
 
资 料:
注册日期: Aug 2002
帖子: 1,334 声望值: 3
精华: 0,解答: 6
#9 旧 2005-09-03, 15:30:18 默认
romano 当前离线  

引用:
作者: hitme
呵呵。。。编译个exe吧,python执行效率要高多了。。
我这儿python都没有装...
这个脚本都是些内置的list,set, 应该执行效率还可以, 这些类型都是c实现的吧
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#10 旧 2005-09-03, 15:59:11 默认
hitme 当前离线  

引用:
作者: romano
我这儿python都没有装...
这个脚本都是些内置的list,set, 应该执行效率还可以, 这些类型都是c实现的吧
晕,不是python? 丢人了
romano
 
romano 的头像
超级会员
 
资 料:
注册日期: Aug 2002
帖子: 1,334 声望值: 3
精华: 0,解答: 6
#11 旧 2005-09-03, 16:20:31 默认
romano 当前离线  

引用:
作者: hitme
晕,不是python? 丢人了
是python脚本, 我是说, python的内置数据类型list,dict,tuple这些,都是用c实现的模块, 所以执行起来, 速度应该还不错。
另外,我的机器, 为了执行些奇怪的程序,装了个低版本的python ,这个脚本已经运行不起来了, 另外一台机器装了2.4版本的,结果昨夜夜里,系统死了, 刚刚重装上系统...
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#12 旧 2005-09-03, 16:33:40 默认
hitme 当前离线  

引用:
作者: romano
是python脚本, 我是说, python的内置数据类型list,dict,tuple这些,都是用c实现的模块, 所以执行起来, 速度应该还不错。
另外,我的机器, 为了执行些奇怪的程序,装了个低版本的python ,这个脚本已经运行不起来了, 另外一台机器装了2.4版本的,结果昨夜夜里,系统死了, 刚刚重装上系统...
恭喜。。恭喜,想想你昨天对我干啥了,吗密码米红,哈哈
快装好,py2exe,辛苦了

此帖于 2005-09-03 16:41:43 被 hitme 编辑. .
romano
 
romano 的头像
超级会员
 
资 料:
注册日期: Aug 2002
帖子: 1,334 声望值: 3
精华: 0,解答: 6
#13 旧 2005-09-03, 17:07:47 默认
romano 当前离线  

附件, 里面的readme有用法和2.3版本可以运行的source, 在另外一台没装python的机器上面运行了
上传的附件
文件类型: rar dist.rar (423.3 KB, 22 次查看)
hitme
 
hitme 的头像
支柱会员
 
资 料:
注册日期: Oct 2001
帖子: 6,489 声望值: 2
精华: 38,解答: 6
#14 旧 2005-09-03, 20:16:24 默认
hitme 当前离线  

引用:
作者: romano
附件, 里面的readme有用法和2.3版本可以运行的source, 在另外一台没装python的机器上面运行了
还有一点问题
能否把标点祛除
输入输出文件名能否作为参数
LeoDou
 
LeoDou 的头像
『软件使用』版主
 
资 料:
注册日期: Sep 2003
帖子: 3,821 声望值: 3
精华: 13,解答: 12
#15 旧 2005-09-03, 20:21:38 默认
LeoDou 当前离线  

cmd 强人!!!

可惜还不能能用在统计汉字

我前段时间还发帖问过这个问题:
【求助】有没有软件可以统计出一篇或几篇文章中字的频率
http://bbs.et8.net/bbs/showthread.php?t=683978

相信hitme兄略微修改一下,统计汉字也可以实现。

期待中!!!
发表新主题 关闭主题

主题工具

论坛规则  发帖规则
不可以发表主题
不可以回复帖子
不可以上传附件
不可以编辑自己的帖子
论坛启用 vB 代码
版面启用 表情符号
版面启用 [IMG] 代码
版面禁用 HTML 代码


所有时间均为北京时间, 现在的时间是 13:09:10.

本论坛带宽由迅通网络提供
SSL证书由TrustAsia提供

Copyright © 2000 - 2019 ClassiClub Forum All Rights Reserved.
粤ICP备09123456号