python统计个单词数目

要求是get_word_frequencies(file_name) 打开了FILE NAME这文件后运用dictionary统计出文章中各单词的数目 效果如下:
{'all': 1, 'forget': 1, '-': 3, 'years': 1, 'proposition': 1, 'continent': 1, 'liberty,': 1, 'We': 2, ...

PS:‘-’这种不属于单词的东西不要统计在内

楼上的程序存在诸多问题,如没有处理标点,文件读取方法错误等。

请问楼主要区分大小写吗?如果区分的话,就按照下面的来:
import re

def get_word_frequencies(file_name):
dic = {}
txt = open(filename, 'r').read().splitlines()
#下面这句替换了除了'-'外的所有标点,因为'-'可能存在于单词中。
txt = re.sub(r'[^\u4e00-\u94a5\w\d\-]', ' ', txt)
#替换单独的'-'
txt = re.sub(r' - ', ' ', txt)
for line in :
for word in line.split():
#如果不区分大小写,那就一律按照小写处理,下面那句改为dic.setdefault(word.lower(), 0)
dic.setdefault(word, 0)
dic[word] += 1
print dic

if __name__ = '__main__':
get_word_frequencies('test.txt')

有问题继续追问吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-18
思路大概是这样:
将文件内容读到一个链表里边,用链表count()函数统计空格数量n,然后循环n次,每次做好单词前后空格标记,将该单词取出来,放到一个word【】空链表里,再用count()函数统计出现数,放到另外一个number【】空链表里,循环执行完之后,结果output=dict(zip(word,number))即为最后字典输出;
或者可以利用re正则表达式直接查找出空格中间的单词,输出到一个新链表里边,然后直接统计每个单词就行了
第2个回答  2012-04-19
dic = {}
for line in open(FILENAME):
for word in line.split():
dic.setdefault(word, 0)
dic[word] += 1
dic
大约这样吧,dic就是你要的了,横线这种东西自己处理一下就行了;
弄个[‘-’,‘其他不要的’]......
第3个回答  2012-04-20
a = str("")
print len(a)
相似回答