复制PDF段落时,如何去除PDF文件中的换行?

2020年8月23日20:09:12 发表评论

作为一个英语比较渣的人,又经常要阅读英文论文,就必须要到谷歌翻译那里复制粘贴了。但这有一个问题,就是PDF的文字复制会连着换行符一起复制过来,这就避免不了复制过来以后要把换行删掉的问题(有换行符会导致翻译不准确)。那么怎么解决呢?

看起来这个问题似乎是要一遍一遍按回车键才能解决,而且似乎也花不了多长时间。但事实并非如此。

首先,假如下面那段文字是你要去除换行的段落。

Attention mechanisms have become almost a de facto standard in many sequence-based tasks (Bahdanau et al., 2015; Gehring et al., 2016). One of the benefits of attention mechanisms is that they
allow for dealing with variable sized inputs, focusing on the most relevant parts of the input to make
decisions. When an attention mechanism is used to compute a representation of a single sequence,
it is commonly referred to as self-attention or intra-attention. Together with Recurrent Neural Networks (RNNs) or convolutions, self-attention has proven to be useful for tasks such as machine
reading (Cheng et al., 2016) and learning sentence representations (Lin et al., 2017). However,
Vaswani et al. (2017) showed that not only self-attention can improve a method based on RNNs or
convolutions, but also that it is sufficient for constructing a powerful model obtaining state-of-the-art
performance on the machine translation task. 

数了一下,总共有7行,于是我们似乎要按7次才行。但还有一个问题,那就是PDF换行之间的单词是没有空格隔开的(隔开单词的是换行符)。因此,你在换行的时候还需要填充一个空格,这样单词才不会粘在一起。

加上鼠标定位的一次按键,这个有7行的段落就需要按3*7=21次键盘才行。想一想,一篇论文有600行,那么你就要按600*3=1800次。仔细一想这个效率low到爆炸,作为一个程序猿,我们知道这其实是一件非常简单的事情,只需要一行代码就可以搞定了。

工具

  • python环境
  • python的库pyperclip(这是一个可以读取电脑剪贴板的库)

PS:注意到默认源下的python库下载会很慢,建议大家使用清华源下载。

pip install 你的包 -i https://pypi.tuna.tsinghua.edu.cn/simple

代码

import pyperclip   #导入库
pyperclip.copy(' '.join(pyperclip.paste().split('\r\n')))

解释一下,pyperclip.copy(str)是把str复制到剪切板上,pyperclip.paste()则是返回剪切板的内容。调用split()函数是把这些字符串按'\r'分开成一个list(因为PDF换行符就是\r)。' '.join()表示将list里面的字符串用' '拼接起来。

然后就只需把代码写入txt文件并以py后缀命名,再到CMD窗口执行(或者设置了默认python执行程序就只需要和exe程序一样双击执行),平均每个段落就只要3次按键,大大的提升了工作效率。

总结

想到以前还傻傻的一个个把换行符手动删出累死累活,如今只需要一行代码就解决了。不禁让人感慨发挥自己的主观能动性的重要性,同时也让人知道学习是一件多么快乐的事情。

flyingsheep

发表评论