python粘贴板小工具---复制内容格式化(clipboard)
目标:
处理粘贴板中的内容,比如进行合并行、转换大小写、首字母大写等。
假设场景:
在阅读pdf文件的时候,遇见了需要复制的内容,一般复制下来都会有各种问题。比如换行错位。
那有没有办法把复制出来的内容,自动转换一下格式呢?比如把换行给去除掉,合并到一起、或者把复制出来的英文首字母大写其他小写,看起来更好看一点?
先看效果:
1、在pdf文件中复制一段话出来。
2、直接粘贴到txt文本文档里
3、点击用Python写的小工具的功能,来处理粘贴板的内容
4、再粘贴到txt文本文档中
5、步骤2和步骤4效果兑对比。发现确实把换行符什么的给去掉了,相当于合并行。
这样就实现了复制后格式化粘贴板内容的功能。
那代码怎么写?(源代码出自:程序员二山(抖音46734750903)我在原有基础上加了点东西)
如下:
import tkinter as tk # python 标准库提供的图形化界面import clipboard"""
图形化界面:对交互式要求比较强- office- adobe
命令行界面: 常用于服务器端- linux/unix
"""def to_title():"""1. 从剪贴板获取文本数据2. 将文本数据更改为标题形式(返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()))3. 把处理过的文本放到剪贴板里面"""text = clipboard.paste()output = text.title()print('处理完成后的数据',output)clipboard.copy(output)def merge_lines():"""1. 从剪贴板获取文本数据2. 将文本数据里的 \r\n or \n 给替换掉3. 把处理过的文本放到剪贴板里面"""text = clipboard.paste()print('拷贝的数据:',text)end = "\r\n" if "\r\n" in text else "\n"output = text.replace(end, "")print('处理完成后的数据', output)clipboard.copy(output)def to_lower():"""转换为小写"""text = clipboard.paste()print('拷贝的数据:',text)output = str(text).lower()print('处理完成后的数据', output)clipboard.copy(output)def to_upper():"""转换为大写"""text = clipboard.paste()print('拷贝的数据:',text)output = str(text).upper()print('处理完成后的数据', output)clipboard.copy(output)def first_upper():"""首字母大写"""text = clipboard.paste()print('拷贝的数据:',text)output = str(text).capitalize()print('处理完成后的数据',output)clipboard.copy(output)def pipeline(process=lambda x: x):"""1. 从剪贴板获取文本数据2. 处理文本数据3. 把处理过的文本放到剪贴板里面"""text = clipboard.paste()print('拷贝的数据:',text)output = process(text)print('处理完成后的数据', output)clipboard.copy(output)def ml(text: str):"""Merge Lines"""end = "\r\n" if "\r\n" in text else "\n"output = text.replace(end, "")return outputdef main():pipeline(ml)if __name__ == "__main__":# 图形化界面的一个解决方式# 列表 list -> 最常用的容器数据结构# 定义非常简单,[]text_li = ["首字母大写其他小写", "合并行", "转为小写", "转为大写", "首字母大写"]func_li = [to_title, merge_lines, to_lower, to_upper, first_upper]# func_li = [to_title, merge_lines, to_lower(), to_upper(), first_upper()]window = tk.Tk()window.title('处理粘贴板的小工具')window.maxsize(500,500)window.minsize(300,300)# [exp for each in li] exp -> 最终元素的形态# [tk.Button(), tk.Button(), ...]# buttons_copy = []# for text, func in zip(text_li, func_li):# buttons_copy.append(tk.Button(text=text, command=func))buttons = [tk.Button(text=t, command=f) for t, f in zip(text_li, func_li)]# for i, j in zip(text_li, func_li):# print(i, j)# for but in buttons:# but.pack()ret = [but.pack() for but in buttons] # -> [None, None]exit_but = tk.Button(text="退出", command=window.destroy)exit_but.pack()window.mainloop()
运行后,会生成一个Windows窗体。
使用:
1、在复制一段文字或者英文
2、在Windows窗体上,选择需要做的操作
3、粘贴到想要粘贴到的地方
4、over
扩展:
这个功能的本质,是处理字符串,只不过处理的是粘贴板里的字符串。
所以可以写很多按钮和对应的功能来进行扩展。
比如代码里用到的lower(),upper(),title()等等都是Python里内置的字符串函数。甚至可以自己写代码处理字符串。
学习这段代码时候遇到的问题:
1、最开始源码里只有这两个函数:
to_title(), merge_lines()
后来我自己加了3个:
to_lower(), to_upper(), first_upper()
加完代码是这样的:
func_li = [to_title, merge_lines, to_lower(), to_upper(), first_upper()]
运行后,发现问题:
to_title(), merge_lines()可以正常使用
to_lower(), to_upper(), first_upper()不可以正常使用
后来找大神帮忙解答,答案如下:
列表可以存储函数。但是注意:存储函数地址和调用函数的区别。
比如这2句话:
func_li = [to_title, merge_lines, to_lower, to_upper, first_upper]
func_li = [to_title, merge_lines, to_lower(), to_upper(), first_upper()]
这2句话区别在于函数名后加没加括号:to_title------------------to_lower()
那么加不加括号的区别是什么呢?
to_title:没加括号,就是把函数地址存入list
to_lower():加了括号,就是调用函数
运行效果也不一样。
比如下图:to_title返回了调用地址;而to_lower()返回了此函数的调用结果:None(因为这函数定义的时候就没返回值,所以就返回了个None)
另外:有兴趣的可以多研究扩展下用途。
比如,经常复制粘贴pdf的,对合并行用的比较多,但是每次都去那个Windows窗体点一下,也挺麻烦的。那么有没有办法,复制之后直接粘贴就是合并行之后的结果?
答案是可以的。写一个while true循环就行。
比如,复制的文字里,有中英文,但是我只想要英文,能不能自动去除掉中文,只保留英文?
也可以。比如用
isascii
欢迎补充
说明:
源代码出自:程序员二山(抖音46734750903)。
python粘贴板小工具---复制内容格式化(clipboard)相关推荐
- python对工作效率的提升_使用了这个几个Python内置小工具,可以让你的工作效率提升一倍...
使用了这个几个Python内置小工具,可以让你的工作效率提升一倍 我们将会详情4个Python解释器自身提供的小工具. 这些小工具在笔者的日常工作中经常使用到, 减少了各种时间的白费, 然而,却很容易 ...
- 太强了,Python 开发桌面小工具,让代码替我们干重复的工作~
作者 | Cherish 来源 | 杰哥的IT之旅 决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 Python 自动生成透视表",这个问题背后有个非常好的解 ...
- 太强了!Python 开发桌面小工具,让代码替我们干重复的工作!
作者:Cherish 来源:https://www.jianshu.com/p/91128d442198 决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 Python ...
- Python 开发桌面小工具,让代码替我们干重复的工作!
作者:Cherish 来源:https://www.jianshu.com/p/91128d442198 本文为读者投稿 决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 ...
- python运维小工具_Python实现跨平台运维小神器
(本文已不再同步更新,最新代码请移步github) 这阵子一直在学python,碰巧最近想把线上服务器环境做一些规范化/统一化,于是便萌生了用python写一个小工具的冲动.就功能方面来说,基本上是在 ...
- 【python小项目】用python写一个小工具——番茄钟
用python写一个小工具--番茄钟 最近听到朋友说在用番茄钟,有点兴趣也想下载一个来用用,后面仔细一想这玩意做起来也不难,索性自己顺手写一个算了,在这里也分享给大家了 一.功能简述 番茄钟即番茄工作 ...
- 太强了~Python 开发桌面小工具,让代码替我们干重复的工作
决定写这篇文章的初衷是来源于一位小伙伴的问题,关于"如何根据数据源用 Python 自动生成透视表",这个问题背后有个非常好的解决思路,让代码替我们做重复的工作,从而减轻工作量,减 ...
- 小程序复制内容至剪贴板
小程序复制内容至剪贴板 前台 <view bindtap='copyText' data-text="{{1234}}">复制</view> js copy ...
- mac和linux共享粘贴板,Mac上复制和粘贴的一些小技巧
了解如何在MacBook Air,MacBook Pro,iMac或任何其他Mac型号上复制和粘贴,以及如何像Pro一样管理剪贴板的提示. 如何在Mac上复制和粘贴: Cmd + C复制 Cmd + ...
最新文章
- Java8 Optional,可以这样用啊
- Qt for VxWorks
- EIGRP中非等价负载均衡的实现
- java铃声类_MediaPlayer.setDataSource中的java.lang.IllegalStateException,使用铃声类
- 前端:实现div等块元素添加X轴滚动显示(Y轴不滚动)
- 【英语学习】【WOTD】incipient 释义/词源/示例
- Tensflow学习笔记(一)——TF生成并查看数据
- hibernate映射(一对一、一对多、多对一、多对多)配置 【转】
- 二元函数偏导数公式_高等数学六:(3)复合函数与微分性质
- html数字自动滚动代码,HTML+JS实现滚动数字的时钟
- PyQt上位机软件开发简介
- 定义复数java_java怎么定义复数?
- PCB菜鸟入门教程——经验分享
- android11 root、android10 root、android9 root、android8.1 root、android6.0 root user版本权限开放
- 程序员转行后都怎么样了,分享我身边的真实经历!
- java计算机毕业设计计算机课程在线培训学习管理系统MyBatis+系统+LW文档+源码+调试部署
- Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached
- java中文括号转英文
- 运维-MAC之OmniPlan Pro3安装
- DELL液晶显示器如何进入工程模式