有人知道这个怎么有优化吗?

python的.replace替换语句,大概有5000个左右,用来替换文本,运行速度有点慢,而且特别占内存,有什么解决方法吗

python-3·python
185 views
Comments
登录后评论
Sign In
·

replace是从头开始查找的且会返回一个新的字符串,你这5000个迭代,如果源字符串很长的话,内存和时间确实都会爆炸

但你这时间复杂度已经摆在这里了,同时我也想不到现成可以使用的库,只能提供几个建议,可以先把拷贝给优化掉,然后替换字符串没冲突的话,考虑从头到尾只遍历一次,类似于在线处理算法

极端一点你这可以用MapReduce处理,文本分成一小段一小段的,然后可以并行处理,最后再连起来就是你要的,如果有10台机器同时干的话能调高许多倍的效率,当然你可以是少一点的物理机再配合多进程

不过要是能忍的话忍忍也还行,毕竟算法不是那么好写

·

为什么会有这种code

·

数据量少可以这样跑,无非就是等的时间久一点,要经常用搜一下字符串匹配、替代算法,做个效率更高的版本

·

可以把原文分段分词并且把你的替换规则放到hashmap(python字典)中,遍历分词并且从hash中提取KV,这样能快不少;同时,可以把上面的过程改成多进程/线程。正确率多少取决于你的分词正确率。

考虑下jieba等分词工具,同时可以把你的替换规则添加到分词规则里,应该99.9%的正确率没问题。