Python 板


LINE

※ 引述《harohepowegr (harohepowegr)》之铭言: : 先读入两个txt档 : b1 : This is a book : This is a pen : This is a table : This is a desk : b2 : This is a papaya : This is a pineapple : This is a banana : This is a melon 我想这是一个计算每个单字(以空格作断词)的一只程式。 以下是我自己的意见提供你参考,也欢迎大家讨论 ~ : 以下为程式码 : #读档函式 : def readbook(filename): : readin = open(filename) : count = [] : for line in readin: : letter = line.split() : count = count + letter : return count 首先,如果是增加一个 list 内的元素,可以善用 .append(), .extend() 这边可以改写成 count.extend(line.split()) def readbook(filename): count = [] with open(filename) as f: for line in f: count.extend(line.split()) return count : #计算出现次数 : def list2dict(count): : ldict = dict() : for ch in count: : ldict[ch]=ldict.get(ch,0)+1 : return ldict 用 dict 计算词频,可以善用 Python standard library 中的 collections.Counter https://docs.python.org/3/library/collections.html#collections.Counter 此段程式码可以用 return Counter(count) 来取代 Counter 有非常多好用的功能,包含他相加就是次数的相加,不存在的 key 会回传 0, 提供 .most_common() 的词频排序功能…(请看官网说明) 在这边能用 Counter.update() 的函式来更新词频,可以传入 list 或者 dict : book1 = readbook('b1.txt') : book2 = readbook('b2.txt') : text = list2dict(book1+book2) : print('全部出现的单字和次数') : print(list2dict(book1+book2)) 因此整只程式可以改写成: from collections import Counter word_freq = Counter(readbook('b1.txt')) word_freq.update(readbook('b2.txt')) print(word_freq) 为什麽写入的内容不一样,你可以试试以下的函式: with open('output.txt', 'w') as f: f.write(str(word_freq)) 细节可以再想想~ 再来讲断词的部份。这些程式码可以写得再简单一点, 在 readbook 中可以用双层的 list comprehension 来完成: with open(filename) as f: return Counter( [wd for line in f for wd in line.split()] ) 或者,他根本可以是一个 generator return Counter( w for l in f for w in line.split() ) 以上~ -- >>>>>> PyCon APAC 2014/TW <<<<<< 手把手课程 PlaY Data 与 Intro to Django 热烈报名中! 详情请见 https://tw.pycon.org/2014apac/zh/tutorial/ --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.217.22
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Python/M.1398425034.A.7C1.html ※ 编辑: ccwang002 (140.112.217.22), 04/25/2014 19:29:26
1F:推 phisixersai:python之神 亮亮OP 04/25 20:07
2F:→ ccwang002:楼上大神 好说好说 04/25 20:15
3F:推 jacky7987:这好方便 推推 04/26 00:28
4F:推 KSJ:推~ 04/26 17:29







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP