一、背景介绍
近期,笔者在工作中遇到了这样一个问题:需要从多个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技术站