免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4113 | 回复: 4
打印 上一主题 下一主题

python新手求教文本统计问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-12-15 07:17 |只看该作者 |倒序浏览
刚刚开始接触python,还没入门。
1.统计某个英文文本中共有多少个不同的单词
我写的linux命令是:
sort test.txt | tr -cs 'a-zA-Z0-9' '[\n*]' | sort | uniq | wc
写的python是:
import string
r=file('test2.txt','r')
w=file('test3.txt','w')
a=r.read()
s=string.maketrans(string.punctuation,' '*32)
m=a.translate(s,)
m=m.lower()
m=m.split()
c=set(m)
d=list(c)
d.sort()
print(len(d))

但是两个结果不一样,谁能帮我看看python程序有什么问题啊

还有请问一下怎么统计这个文本中出现一次的单词共有多少个?
多谢多谢

论坛徽章:
0
2 [报告]
发表于 2008-12-17 14:51 |只看该作者
#!/usr/bin/env python
#coding=utf-8

# 统计某个英文文本中单词的个数

# 首先是读入文本,然后分割单词,最后将文本内容进行处理

def remove_speci(text):
    '''
    移去text文本中的非字符,主要是标点符号,用空格取代
    '''
    punctation = ',.%;()~!@#$%^&*"\'/<>+_?:[]';
    for char in punctation:
        text = text.replace(char,' ')
    return text
   

def count_words(file):
    """
String and Unicode objects have one unique built-in operation:
the % operator (modulo). This is also known as the string
formatting or interpolation operator.
    """
    #f = open(file)
    #context = f.read().lower()
    #f.close()   
    context = count_words.__doc__
    context = remove_speci(context)
    words = context.split()  # 分割单词为列表,同时将符号也列入了!!
    uni_words = set( words )  # 处理为独一无二的单词
    return len( uni_words)
   
   
if __name__ == "__main__":
    print count_words('')

论坛徽章:
0
3 [报告]
发表于 2008-12-19 06:53 |只看该作者
谢谢回复~~~消化中

论坛徽章:
0
4 [报告]
发表于 2009-01-07 10:17 |只看该作者

回复 #1 stoneduke 的帖子(BY 雨夜流星)

其实,我觉得自己写这个挺麻烦的,完了还要测试正确性,
可以考虑间接实现,比如:使用mysql+python, 建张表,将每个单词都插入mysql中,然后直接使用一个SQL语句就可以得到LZ要的结果了;
这样做的优点:
1、自己处理的部分只有读取每个单词,所以出错的可能性极小,改错也容易。
2、统计和排序都是MYSQL自己实现的,不用我们自己写排序和统计的部分,这样不但可以节省时间,而且不会出错,同时效率也是比较高的。

缺点:
1、比原来流程增加了Mysql部分的,建表,插入,查找,删除。

总结:个人认为,使用MYSQL+Python 比单独使用python代价要小,实现也简单些。(我也只是刚开始学python,有不对的地方还请大牛们指点)

论坛徽章:
0
5 [报告]
发表于 2009-01-07 10:22 |只看该作者
原帖由 雨夜流星 于 2009-1-7 10:17 发表
其实,我觉得自己写这个挺麻烦的,完了还要测试正确性,
可以考虑间接实现,比如:使用mysql+python, 建张表,将每个单词都插入mysql中,然后直接使用一个SQL语句就可以得到LZ要的结果了;
这样做的优点:
1 ...


就为了统计个文本还要装个mysql?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP