当前位置:  开发笔记 > 编程语言 > 正文

更有效的方法来挑选一个字符串

如何解决《更有效的方法来挑选一个字符串》经验,为你挑选了2个好方法。

pickle模块似乎在酸洗时使用字符串转义字符; 这在numpy数组上变得低效.考虑以下

z = numpy.zeros(1000, numpy.uint8)
len(z.dumps())
len(cPickle.dumps(z.dumps()))

长度分别为1133个字符和4249个字符.

z.dumps()显示类似"\ x00\x00"(字符串中的实际零),但pickle似乎使用字符串的repr()函数,产生"'\ x00\x00'"(零为ascii零).

ie(z.dumps()中的"0"== False)和(cPickle.dumps中的"0"(z.dumps())== True)



1> Benjamin Pet..:

尝试使用更新版本的pickle协议和protocol参数pickle.dumps().默认值为0,是ASCII文本格式.一个大于1(我建议你使用pickle.HIGHEST_PROTOCOL).协议格式1和2(和3,但py3k)是二进制的,应该更加空间保守.



2> vartec..:

解:

import zlib, cPickle

def zdumps(obj):
  return zlib.compress(cPickle.dumps(obj,cPickle.HIGHEST_PROTOCOL),9)

def zloads(zstr):
  return cPickle.loads(zlib.decompress(zstr))  

>>> len(zdumps(z))
128

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有