1.获取剪贴板中的文本内容。
一、背景介绍
近期,笔者在工作中遇到了这样一个问题:需要从多个excel表中查找特定的信息。由于excel中数据很多,如果一个一个地查找,显得非常耗时费力。经过调研和尝试,笔者最终决定使用Python实现查询剪贴板自动匹配信息的功能。下面将讲解这个功能的具体实现思路。
二、思路详解
Python实现查询剪贴板自动匹配信息的思路如下:
1.获取剪贴板中的文本内容。
import pyperclip
text = pyperclip.paste() # 将剪贴板中的内容赋值给变量text
2.遍历所有的excel表格,读取数据内容到DataFrame中。
import pandas as pd
import os
directory = os.path.abspath(os.path.dirname(__file__)) # 获取脚本所在目录的绝对路径
dfs = []
for filename in os.listdir(directory):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
dfs.append(pd.read_excel(filename))
df = pd.concat(dfs, ignore_index=True) # 将所有DataFrame拼接成一个DataFrame
3.使用正则表达式模块re对DataFrame中的文本内容进行匹配,找出符合条件的记录。
import re
pattern = re.compile(r"\d{3}\w") # 假设需要查找的是以3个数字和一个字母开头的记录
matches = []
for index, row in df.iterrows():
for column, value in row.items():
if isinstance(value, str) and pattern.search(value): # 判断是否为字符串,以及是否符合正则表达式的匹配规则
matches.append([index, column, value]) # 记录匹配到的内容和所在位置
result = pd.DataFrame(matches, columns=["索引", "列名", "匹配内容"]) # 将匹配结果转换为DataFrame对象
4.将匹配结果转换为字符串,复制到剪贴板中。
result_str = result.to_string(index=False)
pyperclip.copy(result_str) # 将匹配结果复制到剪贴板中
三、示例说明
(1)示例1:在多个excel表格中查找包含特定字段的记录
比如,需要查找包含“Apple”的记录。将包含“Apple”的记录存储在名为“result.xlsx”的excel文件中。
import pandas as pd
import os
directory = os.path.abspath(os.path.dirname(__file__))
dfs = []
for filename in os.listdir(directory):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
dfs.append(pd.read_excel(filename))
df = pd.concat(dfs, ignore_index=True)
result = df[df.apply(lambda x: x.astype(str).str.contains("Apple").any(), axis=1)]
result.to_excel("result.xlsx", index=False)
(2)示例2:在多个excel表格中查找以特定字符开头的记录
比如,需要查找以“ASD”开头的记录。将符合条件的记录存储在名为“result.xlsx”的excel文件中。
import os
import pandas as pd
import re
directory = os.path.abspath(os.path.dirname(__file__))
dfs = []
for filename in os.listdir(directory):
if filename.endswith(".xlsx") or filename.endswith(".xls"):
dfs.append(pd.read_excel(filename))
df = pd.concat(dfs, ignore_index=True)
pattern = re.compile(r"^ASD.*")
matches = []
for index, row in df.iterrows():
for column, value in row.items():
if isinstance(value, str) and pattern.search(value):
matches.append([index, column, value])
result = pd.DataFrame(matches, columns=["索引", "列名", "匹配内容"])
result.to_excel("result.xlsx", index=False)
四、总结
通过上述示例,可以看出使用Python实现查询剪贴板自动匹配信息功能的过程并不复杂。步骤主要包括获取剪贴板中的文本内容、遍历excel表格获取数据、使用正则表达式匹配数据、把匹配结果存储到excel文件中。不仅提高了效率,还能够减少繁琐的手动操作,非常实用。
本文标题为:Python实现查询剪贴板自动匹配信息的思路详解


基础教程推荐
- Python-Windows上的多播绑定上的绑定错误 2023-11-14
- linux的shell后门尝试以及python快速转C 2023-09-03
- 浅析Python自带性能强悍的标准库itertools 2023-08-04
- 如何将数据从Python中的不同本地/远程进程流式传输到程序的STDIN中? 2023-11-15
- 在Windows TO Linux / OSX中使用Python进行交叉编译 2023-11-14
- Python实现 MK检验示例代码 2023-08-05
- ubuntu18.04 安装python3.6 opencv3.8.4 2023-11-17
- windows7,python3使用time.strftime()函数报ValueError: embedded null byte 2023-09-04
- Python面向对象之模块详解 2023-08-11
- Python多处理将子进程的stdout重定向到Tkinter Text 2023-11-15