免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: hulnglei
打印 上一主题 下一主题

求教字符串快速比较问题 [复制链接]

论坛徽章:
0
1 [报告]
发表于 2010-06-01 16:00 |显示全部楼层
本帖最后由 t6760915 于 2010-06-01 16:03 编辑

你还发个代码的demo,其实慢在什么地方你也不知道呢,不如说你取这些自符串的地方,可能会慢,也可能是比较的地方。。。

论坛徽章:
0
2 [报告]
发表于 2010-06-01 16:58 |显示全部楼层
回复  t6760915


    确实如此,我也只是估计!

两个输入文件都是这样格式:都是大概80M大小

@08 ...
hulnglei 发表于 2010-06-01 16:23



    读文件你可以采用for line in open('a.txt', 'r'):的方法一行一行读,写结果文件我觉得你的行数不太多的暂时保存在list里面,程序结束后将

result = '\n'.join(resultList)写入文件,你现在的情况可能每次比较后都要写文件,那自然是慢好多了

论坛徽章:
0
3 [报告]
发表于 2010-06-01 17:22 |显示全部楼层
本帖最后由 t6760915 于 2010-06-01 17:24 编辑
  1. #coding=utf-8

  2. import os
  3. import sys

  4. class cmp:
  5.     adict = {}
  6.     bdict = {}

  7.     def __init__(self):
  8.         self.adict = self.loadFile('a.txt')
  9.         self.bdict = self.loadFile('b.txt')

  10.     def loadFile(self, path):
  11.         if not path:
  12.             return False
  13.         
  14.         if not os.path.exists(path):
  15.             return False
  16.         
  17.         try:
  18.             fp = open(path, 'r')
  19.             
  20.             lines = []
  21.             for line in fp:
  22.                 lines.append(line.strip())

  23.             fp.close()
  24.         except:
  25.             return False
  26.         
  27.         if not lines:
  28.             return False
  29.         
  30.         names = []
  31.         values = []
  32.         for linnnum,line in enumerate(lines):
  33.             if not line:
  34.                 continue
  35.             
  36.             if linnnum % 2 == 0:
  37.                 names.append(line)
  38.             else:
  39.                 values.append(line)
  40.         
  41.         return dict(zip(names, values))

  42.     def run(self):
  43.         for key,val in self.adict.items():
  44.             if not self.bdict.has_key(key):
  45.                 print 'key %s not exists in b.txt' % key
  46.             else:
  47.                 if self.bdict[key] == val:
  48.                     print 'key %s eqal in a.txt and b.txt' % key
  49.                 else:
  50.                     print 'key %s not eqal in a.txt and b.txt' % key

  51.     def __del__(self):
  52.         self.adict = {}
  53.         self.bdict = {}

  54. if __name__ == '__main__':
  55.     c = cmp()
  56.     c.run()
复制代码
cmp.rar (999 Bytes, 下载次数: 46)
  1. D:\备份\cmp>python cmp.py
  2. key @080404_HWI-EAS121_0001FC209NNAAXX_4_1_905_794 eqal in a.txt and b.txt
  3. key @080404_HWI-EAS121_0001FC209NNAAXX_4_3_905_794 not exists in b.txt
  4. key @080404_HWI-EAS121_0001FC209NNAAXX_4_1_931_319 not eqal in a.txt and b.tx
  5. key @080404_HWI-EAS121_0001FC209NNAAXX_4_1_895_807 not eqal in a.txt and b.tx
  6. key @080404_HWI-EAS121_0001FC209NNAAXX_4_1_906_759 eqal in a.txt and b.txt

  7. D:\备份\cmp>
复制代码

论坛徽章:
0
4 [报告]
发表于 2010-06-02 16:11 |显示全部楼层
哈,不客气
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP