1
wwwjfy 2013-02-06 21:18:23 +08:00
这类处理awk应该比python更合适
|
2
alexrezit 2013-02-06 21:32:07 +08:00
|
3
alexrezit 2013-02-06 21:32:47 +08:00
|
4
alexrezit 2013-02-06 21:32:56 +08:00
|
5
wwwjfy 2013-02-06 21:55:19 +08:00
@alexrezit 让人 当伸手党 不是什么好事.. 字符串处理python 肯定不快
另外,个人感觉写得太复杂了,没必要用re,csv这种简单的文件结构就直接一行读用逗号split就行 ps, string.join已经deprecated了,推荐'\n'.join |
7
ooof OP |
8
alexrezit 2013-02-07 11:38:11 +08:00
@ooof
提醒你一下... 这个会占用很多内存, 因为是把数据全部读取进去再比较. 我不会 Python 瞎写着玩儿的. =v= |
9
ooof OP @alexrezit 恩,已经体会到了:
十几万基本 Python 就停止下来了;后来换到1000条左右,会出一个结果。 在 python-cn 讨论组,有一个方法,下面是部分代码,但我还没有运行它: counts, linenos = {}, {} sd = counts.setdefault # 节省attribute lookup,不知道有没有必要 for lineno, line in enumerate(lines): words = line.split(',') # 不能处理单词内含逗号的情况 for wd in words: if wd in counts: # 出现过2次了,无视 continue if wd in linenos: # 出现过一次了,剔除 counts[wd] = None del linenos[wd] else: # 记录行号(这个是0-based) linenos[wd] = lineno return linenos |
10
stillzhl 2013-02-07 18:01:48 +08:00 via Android
可以试试collections.Count,专门用来计数的,在手机上看帖,没办法写代码
|
11
ooof OP @stillzhl ,谢谢。
在 Twitter 数据的收集和处理(3) http://book.51cto.com/art/201203/325328.htm 看到有 collections.Counter 应用的介绍。 |