过年放假,还是在宅家里看书,结果发现,有些电子书网上整理的并不好,有很多没有用的空格,十分影响阅读效率,于是打算看看能不能解决一下。步骤也很简单,首先下载一个caliber,这个重度kindle使用者都知道,然后我们需要把mobi转换为epub格式,这个格式是可以编辑的,caliber有自带的caliber editor这样的编辑器,打开就好。
我们可以看到,红色的框框中有很多的空格,而这些空格使我们不需要的,这个时候就需要正则表达式了。我们注意到,一些地方的空格其实是有用的,比如css语法中,例如上面的p和class之间。
然后我们在编辑器的 搜索 中点击查找替换,然后输入如下正则表达式:
[^a-zA-Z=""><0-9]\s[^a-zA-Z=""><0-9]
同时把下面的模式改成 正则表达函数。
我们点击创建/编辑,然后建立一个自己的替换函数,函数的代码会python的同学应该很清楚了。
def replace(match, number, file_name, metadata, dictionaries, data, functions, *args, **kwargs): return match.group()[0] + match.group()[-1]
功能可以说是一目了然。
总体来说,通过正则表达式来定位到空余的空格,正则表达式中,考虑到有一些特殊的格式符号,所以要求空格左右侧都不能是数字和英文字母;然后通过替换函数,将正则表达式匹配到的部分的头尾作为替换的内容。
收工,看书去了。