【办公类110-06】20260807园园通-“托班“户籍地址和居住地址补充完整(Python+EXCEL)
一、背景需求8月10日园园通的托班孩子导入因为前期已经制作了班级栏目所以托班孩子都顺利进入托X班。而且没有标红报错说明托班不像小班需要外省地址自行补充。我把托班孩子全部信息下载来看看他们的居住地、户籍地是否完整。二、下载托班幼儿数据托班的户籍地址是完整的包含省市区县路弄号现在居住地都是闵行区XXX弄也基本完整但是有些有“市”有些没有所以需要完善地址三、批量调整地址1、先修改“居住地址”一列筛选升序没有加“上海市”的都在最前面。替换规律“闵行区”替换为“上海市闵行区”。出现问题下面正确“上海市闵行区XXX”的地址变成了上海市闵行区闵行区在把“上海市上海市闵行区”改成“上海市闵行区“”这里错了导致出现“上海市闵行区浦东新区“之类的表述””应该“上海市上海市”改成上海市”前面的省市都补全了2、尾部的没有“室”Python代码识别每一个地址最后是不是室没有室就补上室但是也可能村里的地址“XX村3号”没有弄和号),所以还是人工检索目前我就手动补一下。3、街道有两个地址里面有“上海市闵行区XXXX街道XXX路XX弄XX号XXX室”需要把“XXX街道”替换成“空”4、复杂地址也是手动修改四、户口地址基本都是正确的包含省市区有三个地址有问题用接龙管家制作的表单收集家长填写信息下载的表单把户籍地址补全现居住地的地址的长度差不多因为都是居住在学校附近五、Python编程复制“06外省市户口孩子更新地址.py改名“07托班双地址重输入包含省市区.py”读取的列名姓名户籍地址、现居地址就可以显示列的数字代码地址重新连接改成 2对了要按索引数字走列的数字-1调整点击坐标位置这里可以选择只要读取第2-2行后续也用它仅把2-26行幼儿信息重新填充地址 园园通托班孩子 两个地址补全省市区再次写入园园通。 火狐浏览器必须100% 豆包阿夏 20260817 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 import random # 随机休眠1~3秒带小数模拟真人操作 def rand_sleep(): t random.uniform(2, 3) time.sleep(t) file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260817托班幼儿地址补全.xlsx wb openpyxl.load_workbook(file_path) # 读取表格 for sheet_name in wb.sheetnames: ws wb[sheet_name] for row in ws.iter_rows(min_row51, values_onlyTrue): # 从第二行开始读取姓名 # for row in ws.iter_rows(min_row2, max_row2, values_onlyTrue): # 做测试一行 # for row in ws.iter_rows(min_row21, values_onlyTrue): # 如果出问题断了从第X行读取孩子姓名 name row[2] # 姓名3 Registered_Address row[26] # 户口地址27 Residential_Address row[33] # 居住地址34 print(name) # 点击姓名栏 pyautogui.click(861,376) # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(name) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 搜索 pyautogui.click(758,497) rand_sleep() # 编辑 pyautogui.click(1652,671) time.sleep(3) # 模拟滚动到底部 pyautogui.click(1652,671) for _ in range(2): pyautogui.scroll(-1000) rand_sleep() # time.sleep(0.3) # 每滚轮一下间隔0.3秒 # 户籍地址点击三次 for i in range(3): pyautogui.click(1404,473) rand_sleep() # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(Registered_Address) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 居住地址点击三次 for i in range(3): pyautogui.click(1173,771) rand_sleep() # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(Residential_Address) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 下移到底部 for _ in range(1): pyautogui.scroll(-1000) rand_sleep() # 确认回到最初的界面 pyautogui.click(1027,857) time.sleep(6) # 保存时间长一点 # 自动最大化VSCode win.maximize() print(VSCode已自动最大化程序结束)存在问题1.肉眼看不见的没有帅选出来的错误再系统个自动复制时我也是盯着看果然看到不少问题。把名字写下来后续手动打开名字调整。感悟可能要来回修改来回下载多次2、运行40条最有网页明显就变慢变卡了。影响默认的间隔秒数。感悟每次运行30条关闭园园通重新登陆再运行40条再导出一次改名字有些地址没有提到区手动补全补全后填充黄色这样就不要从头到尾每个孩子都重新写一次‘目前看就这几个外省户籍地址没有填全“省市区”户口本上可能就是省略的。换了地址重新生成一次从2-26行重新写一遍“户籍地址的详细地址省市区县“居住地”都正确了所以隐藏居住地的代码。 园园通托班孩子 两个地址补全省市区再次写入园园通。 火狐浏览器必须100% 豆包阿夏 20260817 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口匹配标题含 Visual Studio Code vscode_wins gw.getWindowsWithTitle(Visual Studio Code) if not vscode_wins: print(未找到VSCode窗口请先打开VSCode再运行) else: win vscode_wins[0] # 自动最小化VSCode win.minimize() print(VSCode已自动最小化你有5秒时间移动鼠标到目标位置) time.sleep(5) # 等待5秒给你放鼠标 import random # 随机休眠1~3秒带小数模拟真人操作 def rand_sleep(): t random.uniform(2, 3) time.sleep(t) file_path rC:\Users\mhjg2\Desktop\20260805园园通小班分班\20260818托班幼儿地址补全.xlsx wb openpyxl.load_workbook(file_path) # 读取表格 for sheet_name in wb.sheetnames: ws wb[sheet_name] # for row in ws.iter_rows(min_row51, values_onlyTrue): # 从第二行开始读取姓名 for row in ws.iter_rows(min_row2, max_row26, values_onlyTrue): # 做测试一行 # for row in ws.iter_rows(min_row21, values_onlyTrue): # 如果出问题断了从第X行读取孩子姓名 name row[2] # 姓名3 Registered_Address row[26] # 户口地址27 Residential_Address row[33] # 居住地址34 print(name) # 点击姓名栏 pyautogui.click(861,376) # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(name) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # 搜索 pyautogui.click(758,497) rand_sleep() # 编辑 pyautogui.click(1652,671) time.sleep(3) # 模拟滚动到底部 pyautogui.click(1652,671) for _ in range(2): pyautogui.scroll(-1000) rand_sleep() # time.sleep(0.3) # 每滚轮一下间隔0.3秒 # 户籍地址点击三次 for i in range(3): pyautogui.click(1404,473) rand_sleep() # 1. 复制指定文字到剪贴板 # print(写入姓名:,name) pyperclip.copy(Registered_Address) # 2. 模拟CtrlV粘贴 pyautogui.hotkey(ctrl, v) rand_sleep() # 延迟2秒切换窗口 # # 居住地址点击三次 # for i in range(3): # pyautogui.click(1173,771) # rand_sleep() # # 1. 复制指定文字到剪贴板 # # print(写入姓名:,name) # pyperclip.copy(Residential_Address) # # 2. 模拟CtrlV粘贴 # pyautogui.hotkey(ctrl, v) # rand_sleep() # 延迟2秒切换窗口 # 下移到底部 for _ in range(1): pyautogui.scroll(-1000) rand_sleep() # 确认回到最初的界面 pyautogui.click(1027,857) time.sleep(6) # 保存时间长一点 # 自动最大化VSCode win.maximize() print(VSCode已自动最大化程序结束)这次托班幼儿的双地址户籍、居住都是完整的了七、感悟用Python模拟人工补全幼儿的户籍地址省市区和居住地址省市区是为了下载表单后教师更清晰从双地址中看到省市过去很多地址只有XX县XX乡XXX村XX组不清楚是那个省市的。用Python进一步精确“每个地址”的完整度python批量人工核查两者缺一不可。