创造太阳 发表于 2020-10-27 16:18

为了让女朋友赶快成为办公室里的老司机,我只好趁着中午吃饭的时候用python研究了...

我给女朋友发了20000句情话,她暂时不想听情话了!(详见:女朋友抱怨不会说情话,用python给她发了20000句!让她见识见识情话大全!https://www.52pojie.cn/thread-1113388-1-1.html(出处: 吾爱破解论坛))
女朋友最近不找我下五子棋了!(详见:女朋友下棋比我厉害,还特别嚣张,不能忍。拿python敲个辅助,看她如何嚣张!https://www.52pojie.cn/thread-1116867-1-1.html(出处: 吾爱破解论坛))
不过也没怼我,上次的表情包好像白存了,不过还是留着吧,万一派上用场了呢?(详见:为了防止女朋友怼我,我就先用python爬了3600个怼人表情包等她来战!https://www.52pojie.cn/thread-1118801-1-1.html(出处: 吾爱破解论坛))
也不知道你们找到女朋友了没有,找到的话,一起来交流研究!(详见:别再酸了,女朋友是不可能发,但是可以用python帮你创造机会搞到一个!搞到来告诉我!https://www.52pojie.cn/thread-1119202-1-1.html(出处: 吾爱破解论坛))
女朋友存了好多网上的男明星的照片,我准备用python全部换成我的脸!https://www.52pojie.cn/thread-1120431-1-1.html(出处: 吾爱破解论坛)
为了知道女朋友的小秘密,我用python爬了榜姐微博下60000个女生小秘密!https://www.52pojie.cn/thread-1123043-1-1.html(出处: 吾爱破解论坛)
女朋友每晚都给我发诱惑图,我用python搞了更多诱惑图反击她!https://www.52pojie.cn/thread-1128807-1-1.html(出处: 吾爱破解论坛)
女朋友要和我拼手速,不得不用python让她见识我的手速!年轻人,不要试图和你不知...https://www.52pojie.cn/thread-1139015-1-1.html(出处: 吾爱破解论坛)
为了看看女朋友生日那天是什么样子,我用python爬了一年的照片!https://www.52pojie.cn/thread-1144764-1-1.html(出处: 吾爱破解论坛)
女朋友说A罩杯最流行,我用python爬了几十万的购买数据来证明她是在狡辩!https://www.52pojie.cn/thread-1145712-1-1.html(出处: 吾爱破解论坛)
女朋友说因为异性相吸,所以容易产生真爱!我觉得得用python验证一下!https://www.52pojie.cn/thread-1151862-1-1.html(出处: 吾爱破解论坛)
周扬青和罗志祥分手,女朋友说要去周扬青吧看看有没有经验贴,我只好用python快速...https://www.52pojie.cn/thread-1163712-1-1.html(出处: 吾爱破解论坛)
女朋友比较喜欢民宿风格,我就用python爬了一个短租民宿网站,做个合格的男朋友!https://www.52pojie.cn/thread-1171476-1-1.html(出处: 吾爱破解论坛)
为了提高女朋友的计算速度,我用python帮她做了一个出题器,提升一下她的智力水平!https://www.52pojie.cn/thread-1187174-1-1.html(出处: 吾爱破解论坛)
不要998,不要668,不要188,只要10行代码!手把手带你给女朋友写本《吃不胖经》!https://www.52pojie.cn/thread-1235152-1-1.html(出处: 吾爱破解论坛)
女朋友急的叫“爸爸”了,我只好用python帮女朋友迅速完成问卷搜集任务,一小时轻松完成五百份!.https://www.52pojie.cn/thread-1252330-1-1.html(出处: 吾爱破解论坛)
七夕前用python给女朋友抢了萝卜丁,结果她好像并不是很开心!强烈鄙视乱起名的商...https://www.52pojie.cn/thread-1256443-1-1.html(出处: 吾爱破解论坛)
为了找到女朋友当年写的让人读起来会脸红的小说,只好用python把飞卢文学近60000本...https://www.52pojie.cn/thread-1259368-1-1.html(出处: 吾爱破解论坛)
女朋友天天要我来算时间,只好用python整个小玩意让她自己玩吧!https://www.52pojie.cn/thread-1289178-1-1.html(出处: 吾爱破解论坛)






女朋友上午给我说,昨天本来打算准时下班,结果因为在办公室查询和处理数据速度太慢,一天才完成了几个表格,要是搞不定的话,今天还要加班。
办公室里的老司机们处理起来比较熟练,双屏、三屏电脑或者用函数什么的处理的挺快的。
之前倒是教女朋友用过vlookup函数来查询,但是她感觉太复杂了,只好用python帮她减轻点工作压力吧。



女朋友工作任务主要是查询配件的价格。
每个配件大概有10-15个供应商,每个供应商在每个报价周期中价格是不一定相同的,比方说九月报价100元,十月报价110元等,并且有的供应商在一个表格中有不同的工作簿,查找起来很麻烦,用vlookup函数不是很方便。
现在的操作方法基本上是,记住《配件清单》里面的配件名字,复制一下,然后打开各个供应商的《报价表》,在报价表里找到这个配件名字,然后把各个报价周期中的价格给找到,重新建立一个表格,把这些信息给复制进去就可以了。
老司机一般就用双屏来同时查找,速度会相对快一点,但是这个速度在自动查询上还是渣渣。



中午吃饭的时候大致想了一下,程序操作逻辑:
1.读取文件获得所有“配件名字”;
2.批量读取供应商《报价表》
3.在各个供应商《报价表》中依次搜索“配件名字”,搜索各个报价表中的工作簿的所有信息;
4.根据“配件名字”确定所在的行;
5.根据“配件名字”所在行,读取该行所有信息,即各周期报价
6.将读取到的各个周期报价给进行保存,保存所在位置及文件。

代码如下:
import pandas as pd
import os
import easygui as g
import xlrd





path = g.fileopenbox(msg="选择文件", title="选择要查询的文件清单", default='*', filetypes=None)
data = xlrd.open_workbook(path, encoding_override='utf-8')    #打开文件(文件路径)
table = data.sheets()# 选定表    #第一个工作簿
nrows = table.nrows# 获取行号
ncols = table.ncols# 获取列号
names = []   #空列表存储
for i in range(1, nrows):# 第0行为表头
    alldata = table.row_values(i)# 循环输出excel表中每一行,即所有数据
    name = alldata# 取出表中第二列数据
    names.append(name)
print('要查询的信息如下:')
print(names)


def listdir(path, path_name):# 定义传入存储文件的list函数
    for file in os.listdir(path):    #依次获得返回指定的文件夹包含的文件或文件夹的名字的列表
      file_path = os.path.join(path, file)    #将多个路径组合后返回
      if os.path.isdir(file_path):    #返回一个列表,其中包含有指定路径下的目录和文件的名称
            listdir(file_path, path_name)
      else:
            path_name.append(file_path)       #加入到路径列表中


path_name = []
path = g.diropenbox(msg="请选择文件夹", title="选择要查询的文件夹")
listdir(path,path_name)


for path in path_name:
    file = os.path.split(path)   #拆分分隔符
    file_name = file



    try:
      data = pd.read_excel(path,None)   #读取待查询的excel文件数据,设置None可以生成一个字典,字典中的key值即为sheet名字
      sheet_names = []    #用一个空列表, 准备存储sheet的名字
      for sh_name in data.keys():    #依次便利data.key()中的名字
            # print(sh_name)
            sheet_names.append(sh_name)    #将sheet名字存储进入列表sheet_names
      for sheet_name in sheet_names:    #依次循环获得工作簿
            workbook = pd.read_excel(path, sheet_name=sheet_name)# 文件路径和sheet名字
            # print(workbook)
            for indexs in workbook.index:# 用.index进行依次查找
                for i in range(len(workbook.loc.values)):# 依次生成
                  for name in names:    #依次循环
                        if (workbook.loc.values == name):    #如果查找到该关键词
                            print("*" * 50)
                            print("[" + name + "]的位置在" + path + "的" + sheet_name + "   工作簿中")    #显示位置
                            print('行数:', indexs + 1, '列数:', i + 1)    #行数和列数,从0开始,要加1
                            print("*" * 50)
                            data = pd.DataFrame(pd.read_excel(path,sheet_name=sheet_name))# 读取数据,设置None可以生成一个字典,字典中的key值即为sheet名字,此时不用使用DataFram,会报错
                            counts = data.loc
                            print("[" + name + "]所在行数据如下:")
                            print(counts)# 获取行名为0这一行的内容
                            df = pd.DataFrame(counts)
                            print(df)
                            file_save_name ='[' + name + ']-在文件[' + file_name + ']中的['+ sheet_name +']工作簿中的行数据'    #关键词所在位置
                            with open(name + '.txt', 'a+',encoding='utf-8') as f:# 用w格式新建文件,并且用file_name命名,再加上“.txt”后缀,文字编码格式'utf-8'
                              f.write(file_save_name + '\n')# 将文件位置写入到文本
                              f.close()# 将文件关闭保存
                            df.to_excel(file_save_name + ".xlsx")   #写入文件

    except Exception as e:
      print(e)
      pass

print("自动查询和生成完毕")



zjcxdcq 发表于 2020-10-27 20:25

啥时候做这个啊 大佬?
为了让女朋友赶快成为大家的女朋友,我只好忍着心痛用python....

创造太阳 发表于 2020-11-6 09:48

YWSN 发表于 2020-11-5 17:09
大佬,大佬,请教一下怎么用python写一个“按照固定的姓名来筛选和提取表格里相应的姓名,并且提取相应姓名 ...

import pandas as pd
import os
import easygui as g
import xlrd







name = g.enterbox(msg="请输入要查询的名字")    #输入名字


def listdir(path, path_name):# 定义传入存储文件的list函数
    for file in os.listdir(path):    #依次获得返回指定的文件夹包含的文件或文件夹的名字的列表
      file_path = os.path.join(path, file)    #将多个路径组合后返回
      if os.path.isdir(file_path):    #返回一个列表,其中包含有指定路径下的目录和文件的名称
            listdir(file_path, path_name)
      else:
            path_name.append(file_path)       #加入到路径列表中


path_name = []   #空路径列表
path = g.diropenbox(msg="请选择文件夹", title="选择要查询的文件夹")
listdir(path,path_name)


for path in path_name:
    file = os.path.split(path)   #拆分分隔符
    file_name = file

    try:
      data = pd.read_excel(path,None)   #读取待查询的excel文件数据,设置None可以生成一个字典,字典中的key值即为sheet名字
      sheet_names = []    #用一个空列表, 准备存储sheet的名字
      for sh_name in data.keys():    #依次便利data.key()中的名字
            # print(sh_name)
            sheet_names.append(sh_name)    #将sheet名字存储进入列表sheet_names
      for sheet_name in sheet_names:    #依次循环获得工作簿
            workbook = pd.read_excel(path, sheet_name=sheet_name)# 文件路径和sheet名字
            # print(workbook)
            for indexs in workbook.index:# 用.index进行依次查找
                for i in range(len(workbook.loc.values)):# 依次生成
                  if (workbook.loc.values == name):    #如果查找到该关键词
                        print("*" * 50)
                        print("[" + name + "]的位置在" + path + "的" + sheet_name + "   工作簿中")    #显示位置
                        print('行数:', indexs + 1, '列数:', i + 1)    #行数和列数,从0开始,要加1
                        print("*" * 50)
                        data = pd.DataFrame(pd.read_excel(path,sheet_name=sheet_name))# 读取数据,设置None可以生成一个字典,字典中的key值即为sheet名字,此时不用使用DataFram,会报错
                        counts = data.loc
                        print("[" + name + "]所在行数据如下:")
                        print(counts)# 获取行名为0这一行的内容
                        df = pd.DataFrame(counts)
                        print(df)
                        file_save_name ='[' + name + ']-在文件[' + file_name + ']中的['+ sheet_name +']工作簿中的行数据'    #关键词所在位置
                        with open(name + '.txt', 'a+',encoding='utf-8') as f:# 用w格式新建文件,并且用file_name命名,再加上“.txt”后缀,文字编码格式'utf-8'
                            f.write(file_save_name + '\n')# 将文件位置写入到文本
                            f.close()# 将文件关闭保存
                        df.to_excel(file_save_name + ".xlsx")   #写入文件

    except Exception as e:
      print(e)
      pass

print("查询和生成完毕")

tbz5300 发表于 2020-10-27 16:23

不明觉厉。LZ大大 你女朋可以很爱你

l943644670 发表于 2020-10-27 16:24

我透,老哥秀的一p,无形中教学了代码。

天上飞来一只 发表于 2020-10-27 16:24

吾爱币,爱心值真多!

ayaoko 发表于 2020-10-27 16:25

python这么牛,什么时候也要学习一下

啥叫破解 发表于 2020-10-27 16:26

你女朋友知道你这么腻害么

ymxck 发表于 2020-10-27 16:27

厉害,佩服!

一场荒唐半生梦 发表于 2020-10-27 16:31

楼主请问下学习python新手入门应该在哪里学习??想尝试学着做些电商类的软件,不知道会不会好难{:301_971:}

xinanqq 发表于 2020-10-27 16:31

厉害,大佬膜拜,,

kingkalam 发表于 2020-10-27 16:31

羡慕有这么多猿女朋友 {:1_893:}
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 为了让女朋友赶快成为办公室里的老司机,我只好趁着中午吃饭的时候用python研究了...