python自动粘贴文字_提高工作效率——用Python改良剪贴板

使用场景:

复制粘贴在我们的日常工作中使用率极高,~毕竟我们都是面向ctrl+c和ctrl+v编程~

比如说用SQL导数据,

某天同事扔给你一份疑似开挂的用户id,让你查一下他们的充值金额

这对你当然不是个难事,基本的SQL就可以搞定,

1select user_id,pay_amount from some_table

2where user_id in ()

因为要经常调用,你甚至都保存好了模板

但是在数据库里用户id是字符类型,而你Excel复制出来的话是整数形式

我们怎么才能快捷地批量添加单引号和逗号?这就是本文的主题了

1. 利用Sublime Text 3的快捷键

文字版:

Ctrl+a 全选 --> Ctrl+Shift+L 多行编辑 --> 单引号 --> End 跳转到每行的末尾 --> 逗号 --> Ctrl+End

跳转到整个文本的最后 --> 退格键 删掉最后一个逗号

这种方法将用户id从Excel复制到Sublime,然后通过快捷键完成操作,看起来有点繁琐,但是熟练快捷键后整个操作很快就能完成。

不过这种方法有个弊端,就是受限于Sublime的性能,当数据到了1万以上,快捷键批量处理就会很卡

所以当数据量比较大的时候,我们采取第二种方法

2. 利用Excel公式

如图所示,A列为用户id,在B1单元格,我们输入两个英文的单引号;(因为在Excel里,单元格开头的单引号是文本的象征,所以如果我们只输入一个单引号,这意味着这个单元格是个空字符串)

在C1单元格,我们输入一个逗号;接着我们就可以利用“&”来拼接字符串了

公式如下(注意B1和C1要绝对引用)

1=$B$1&A1&$B$1&$C$1

写好公式后,直接往下拖拽就好了

这种方法相比Sublime的快捷键,会麻烦一点,但是有两个优势大部分人都没有安装Sublime,但几乎每台电脑都装有Excel或WPS

当行数上万的时候,Sublime的多行模式就会很卡了,而对Excel来说,10万行秒出结果

但是当id数量达到100万的时候,Excel的公式拖拽也变得很慢了,实测100万行要55秒才完成

于是有了方法3

3. 用Python实现

首先我们要介绍一个操作剪贴板的模块——pyperclip

安装:pip instasll pyperclip

这个模块有两个函数:copy(), 向剪贴板发送文本

paste(), 从剪贴板接收文本

用法示例:

首先用copy函数来发送文本到剪贴板(即复制内容),然后把从剪贴板接收的内容(即粘贴内容),打印出来

这时候你用ctrl+v粘贴,出来的文本也是“Python从放弃到真香”

如果你不用copy方法,直接用paste的话,会打印出你剪贴板的文本,也就是你上一次复制的内容。

总结一下,pyperclip的用法就是和剪贴板相关联(仅限文本),copy了什么内容,就会原封不动的paste什么内容。

当然到目前为止,我们这个用Python实现的复制粘贴并没有能够优化系统剪贴板的功能,甚至还不如后者(因为只能复制文本),不着急,我们继续完善代码。

引入pyperclip这个模块,主要是为了和剪贴板相通,也就是实现复制-粘贴,我们还要在中间加一个编辑文本的功能,

即复制-编辑-粘贴,这个编辑功能我们利用Python的字符串操作完成

先举个例子:

比如说我要把复制的文本全部倒过来粘贴,怎么实现呢?

1import pyperclip

2

3s = pyperclip.paste()

4s_ = s[::-1]

5pyperclip.copy(s_)

效果图:

下面进入正题,如何将Excel上面的id批量加上单引号和逗号

首先,复制Excel上的5个id,粘贴出来研究

发现每个id后面都有个空行,且末尾空了两行

利用内置函数repr()查看它的真实面目

原来每个id后面都有个\r\n,这时我们选择用\r\n作为分隔符

由于最后有一个空值,我们把空值去掉(其实不去空值,也不影响后面操作)

1import pyperclip

2

3s = pyperclip.paste()

4s_ = s.split('\r\n')

5

6list_ = []

7for i in s_:

8 if i:

9 list_.append(i)

10print(list_)

如果用列表推导式的话,看起来会简练很多

1import pyperclip

2

3s = pyperclip.paste()

4list_ = [i for i in s.split('\r\n') if i]

5print(list_)

每个id的两端都加上单引号,末尾加逗号,注意单引号要转义

用换行符(\n)连接每个id,转换为字符串

用切片删掉最末尾的一个引号

1 s_ = '\n'.join(list_)[:-1]

最后,把处理后的字符串发送给剪贴板

1import pyperclip

2

3s = pyperclip.paste()

4list_ = ['\'' + i + '\''+',' for i in s.split('\r\n') if i]

5s_ = '\n'.join(list_)[:-1]

6pyperclip.copy(s_)

测试一下:

大功告成!

实测100w个id:

一秒内完成!

虽然我们通过剪贴板加上字符处理,实现的功能很强大,但是使用起来还是有些繁琐

复制——打开py文件——运行——粘贴

如果能把中间的两步合成一步,那么用户体验无疑会提升很多、

我想到的方法是编写一个bat,然后用快捷键调用(抛砖引玉)

具体步骤:

在py文件的同一个目录下建立一个txt,写入 python 自动加单引号和逗号.py

然后把后缀改成bat

发送bat的快捷方式到桌面

右键属性,设置快捷键

好了,最终,整个流程变为:复制——快捷键——粘贴

exe文件通过发送快捷方式到桌面,同样可以设置快捷键

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值