看书的时候,有时会需要将书里的内容复制出来,比如我有段时间要将书里的内容做成Anki的卡片给孩子学习,有时书里面我看不懂的内容(把里面的单词都查了还是看不懂)贴到Google翻译里面翻译,有这个引用的内容会比较麻烦。
“この傷があの……」マクゴナガル先生が囁いた。 「そうじゃ。一生残るじゃろう」 「ダンブルドア、なんとかしてやれないんですか?”
摘录来自: J.K. Rowling. “ハリー・ポッターと賢者の石 - Harry Potter and the Philosopher's Stone (ハリー・ポッターシリーズ)。” Apple Books.
像这样长长的书名的时候删除起来还真的挺麻烦的。
我最开始找到的是在国外的网站上找到的解决方案,和这个链接的思路是一样的。就是用Automator获得剪贴板里面内容,然后通过以下bash命令把添加的引用信息去除:
sed -E -e 's/^“//g' 删除每段开头的 “
sed -E -e 's/”$//g' 删除每段结尾的 ”
sed -E -e '/^$/d' 删除所有空行
sed -E -e 's/^(摘录来自).*//g' 删除以“摘录来自”为开头的段落
但是这个方案有一个缺陷,如果复制多行的时候,如果原文中本来也有双引号的话,也会给误删除。
要修改的话我对bash的sed命令又一窍不通,一直想用Python来处理,但是Automator的参数传递我一直没有搞明白。
今天偶然在简书上发现了这篇文章,这个简直太有帮助了,简单来说就是Automator获得的文本,传到stdin
,这个在Python的sys
模块里可以读取,然后用Python的print
函数可以将处理的结果传给Automator,Automator可以将这个结果赋值给一个变量,或者直接输出到剪贴板。
具体操作如下:
-
打开Automator,然后新建一个快速操作。
-
实用工具
→获取剪贴板内容
,并拖到右边的编辑区;
- 再添加
运行Shell脚本
,并且选择Python。
注意Shell的地方选择Python,传递输入到stdin。 - 添加
拷贝至剪贴板
。
- 在运行Shell脚本的地方添加以下代码。
import sys
import re
content = ''
#从stdin里读取内容
for t in sys.stdin:
content += t
#利用正则表达式来查找原文并去除添加的引用信息
p = re.compile('“(.+)”\n\n摘录来自:')
copy = p.search(content).group(1)
#用print函数把结果传回Automator
if copy:
print(copy)
- 将这个快速操作保存一个自己容易记的名字,我这里保存为rmcitation。
-
在系统设置里面给这个快速操作添加一个快捷键。
这样以后在iBooks里可以选择文字,复制到剪贴板,然后再按这个组合键,系统剪贴板里面的内容就会变成干净的内容了。
下面的这个方法是我在折腾Automator的时候突然想到的,可以将选择的文本直接复制的剪贴板。只是这个方法有一个小问题,我们后面再说。
-
还是新建一个快速操作;
选择一下图书。
- 再添加
拷贝至剪贴板
;
-
也给它添加一个快捷键。
下面就可以在iBooks里面试试了,一般情况下都是没有问题,只要你读的书不是像这样的带有注音的就不会有问题。