吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 19783|回复: 170
收起左侧

[原创工具] 【写给女友的软件①】批量匹配软件(类似Vlookup函数)

    [复制链接]
wkdxz 发表于 2022-10-9 11:02
本帖最后由 wkdxz 于 2022-11-18 16:51 编辑

新软件,欢迎试用:【写给女友的软件③】微信消息文字整理软件 https://www.52pojie.cn/thread-1699365-1-1.html

软件功能:类似Vlookup函数(精确匹配模式),使用Python编写,使用PySimpleGui制作界面。
与Vlookup函数一样,只返回第一个匹配的结果。

2022-10-10更新:

  • 支持反向匹配功能
  • 支持多列数据作为数据源
  • 增加清空按钮

为什么有这个软件?
      女朋友的需求,她要把人员的序号对应名字,填进表格。我教她用vlookup函数,一教就会,一会就忘。过了两天,又有类似的问题要我帮忙处理。所以我写了这个软件,来帮助不会或者懒得写Vlookup函数的朋友


下载:https://wwt.lanzout.com/iUr5V0dukhvc 密码:gcg5
解压密码:52pojie

源码:https://www.52pojie.cn/thread-1698082-1-1.html

另一个【写给女友的软件②】,先处理,再匹配,效率更高。字符批量处理软件https://www.52pojie.cn/thread-1698009-1-1.html

软件界面:


Snipaste_2022-11-18_16-52-10.jpg

免费评分

参与人数 37吾爱币 +40 热心值 +33 收起 理由
123567a + 1 + 1 我很赞同!
yxdxf + 1 + 1 谢谢@Thanks!
zanzhifei + 1 + 1 我很赞同!
Nido + 1 + 1 鼓励转贴优秀软件安全工具和文档!
翻车鱼2333 + 1 谢谢@Thanks!
Qmomo + 1 + 1 我很赞同!
catoo1 + 1 谢谢@Thanks!
mingwudi + 1 + 1 其实挺有用的,对女朋友来说
apples1949 + 2 + 1 谢谢@Thanks!
zengluozhen + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
happyoil001 + 1 + 1 谢谢@Thanks!
qsuron + 1 + 1 有用!谢谢
Aunforgettable + 1 + 1 谢谢@Thanks!
xbdy + 1 我很赞同!
bsxhht + 1 + 1 我很赞同!
renjia + 1 谢谢@Thanks!
uyktyty + 1 + 1 谢谢@Thanks!
majuiong + 1 谢谢@Thanks!
tonydudu + 1 + 1 我很赞同!
o824 + 1 + 1 谢谢@Thanks!
zhang1836 + 1 + 1 我很赞同!
rogernash + 1 + 1 谢谢@Thanks!
fujingsitb + 1 + 1 谢谢@Thanks!
liheshang + 1 + 1 谢谢@Thanks!
lizebird + 1 热心回复!
orcinusorca + 1 + 1 我很赞同!
Jas818 + 1 + 1 谢谢@Thanks!
一场荒唐半生梦 + 1 + 1 谢谢@Thanks!
realma2014 + 1 + 1 我很赞同!
plwt + 2 + 1 我很赞同!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
忆江南 + 1 + 1 我很赞同!
jefflo + 1 谢谢@Thanks!
又是馒头 + 1 + 1 鼓励转贴优秀软件安全工具和文档!
dengshichuan123 + 1 谢谢@Thanks!
蕤宾廿 + 1 + 1 我很赞同!
noplaya + 1 谢谢@Thanks!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

卓致文 发表于 2022-10-14 03:41
我教她用vlookup函数,一教就会,一会就忘。过了两天,又有类似的问题要我帮忙处理。

这个深有体会,我们都成了老婆公司的免费劳力
lzspain 发表于 2022-10-9 11:17
 楼主| wkdxz 发表于 2022-10-11 11:17
yxdxf 发表于 2023-5-29 11:30
a2523188267 发表于 2022-10-9 11:19
自己玩可以,实际用处不大

菜鸟还是很多的,用处很大。
tejiamao 发表于 2022-11-19 12:14
这个玩意省了我太多时间了,太强了
phyiscsdhl2020 发表于 2022-10-10 14:47

XLOOKUP更好用
 楼主| wkdxz 发表于 2022-10-10 12:10

有点简陋,如果你改得完善了,记得发我一份。

[Python] 纯文本查看 复制代码
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
030
031
032
033
034
035
036
037
038
039
040
041
042
043
044
045
046
047
048
049
050
051
052
053
054
055
056
057
058
059
060
061
062
063
064
065
066
067
068
069
070
071
072
073
074
075
076
077
078
079
080
081
082
083
084
085
086
087
088
089
090
091
092
093
094
095
096
097
098
099
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
from pyperclip import copy, paste
import PySimpleGUI as sg
 
 
def data_source_dic(shujuyuan, fenge='\t'):
    data_source = shujuyuan.strip().split('\n')
    if fenge not in data_source[0]:
        fenge = ' '
    data_dic = {}
    try:
        for i in data_source:
            if i := i.strip():
                k, v = i.split(fenge)
                if k not in data_dic:
                    data_dic[k.strip()] = v.strip()
        return data_dic
    except:
        return
 
 
def pipei(shujuyuan, daipipei):
    try:
        pipei_list = daipipei.split('\n')
        return [shujuyuan.get(i.strip(), '') for i in pipei_list]
    except:
        return
 
 
def gui():
    sg.theme('GrayGrayGray'# 设置当前主题
    layout = [[
        sg.Frame(
            '数据源',
            layout=[
                [
                    sg.Multiline('', key='数据源', size=(26, 18)),
                ],
                [
                    sg.Button(' 粘 贴 ', key='粘数据源', pad=(8)),
                ],
            ],
            element_justification='center',
            pad=(5),
        ),
        sg.Frame(
            '待匹配',
            layout=[
                [
                    sg.Multiline('', key='待匹配', size=(18, 18)),
                ],
                [
                    sg.Button(' 粘 贴 ', key='粘待匹配', pad=(8)),
                ],
            ],
            element_justification='center',
            pad=(5),
        ),
        sg.Frame(
            '结果',
            layout=[
                [
                    sg.Multiline('',
                                 key='结果',
                                 size=(18, 18),
                                 background_color='#fffff7'),
                ],
                [
                    sg.Button(' 匹 配 ', key='执行匹配', pad=(8)),
                    sg.Button(' 复 制 ',
                              key='复制结果',
                              pad=(8),
                              button_color='#ffa631'),
                ],
            ],
            element_justification='center',
            pad=(5),
        ),
    ], [sg.Output(key='执行结果', size=(645, 6))]]
 
    # 创建展示窗口8
    window = sg.Window('匹配字符',
                       layout,
                       font=('微软雅黑', 10),
                       size=(650, 574),
                       element_justification='center').finalize()
    window['执行结果'].TKOut.output.config(wrap='word')
 
    # 事件循环并获取输入值
    while True:
        event, values = window.read()
        if not event:
            break
 
        jtb = '' if paste() else ',但是剪贴板为空!'
 
        if event == '粘数据源':
            window['数据源'].update(paste())
            print(f'粘贴数据源{jtb}')
        if event == '粘待匹配':
            window['待匹配'].update(paste())
            print(f'粘贴待匹配的数据{jtb}')
        if event == '执行匹配':
            print('执行匹配')
            if values['数据源'] and values['待匹配']:
                shujuyuan = data_source_dic(values['数据源'])
                pipei_list = pipei(shujuyuan, values['待匹配'])
                try:
                    if isinstance(pipei_list, list) and pipei_list:
                        window['结果'].update('\n'.join(pipei_list))
                except:
                    pass
        elif event == '复制结果':
            res = values['结果']
            if res.strip():
                len_res = len(res.split('\n'))
                copy(res)
                print(f'✔ 已复制 {len_res} 条数据')
            else:
                print('结果为空,没复制任何内容')
 
    window.close()
 
 
if __name__ == '__main__':
    gui()
0788cpl 发表于 2022-10-9 11:08
谢大佬分享
youcome 发表于 2022-10-9 11:10
必须支持,谢谢分享
xxl1039 发表于 2022-10-9 11:16
会玩。。
谢谢分享。
a2523188267 发表于 2022-10-9 11:19
自己玩可以,实际用处不大
莫小弟 发表于 2022-10-9 11:28
支持一下支持一下!
joseph6s 发表于 2022-10-9 11:31
谢谢分享
qj5156 发表于 2022-10-9 11:57
我喜欢用VBA解决问题
seawaycao 发表于 2022-10-9 12:08

感谢楼主无私分享!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-4-2 01:42

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表