【办公类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 = r"C:\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_row=51, values_only=True):        # 从第二行开始读取姓名
    # for row in ws.iter_rows(min_row=2, max_row=2, values_only=True):        # 做测试一行
        
    # for row in ws.iter_rows(min_row=21, values_only=True):    # 如果出问题,断了,从第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. 模拟Ctrl+V粘贴
        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. 模拟Ctrl+V粘贴
        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. 模拟Ctrl+V粘贴
        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 = r"C:\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_row=51, values_only=True):        # 从第二行开始读取姓名
    for row in ws.iter_rows(min_row=2, max_row=26, values_only=True):        # 做测试一行
        
    # for row in ws.iter_rows(min_row=21, values_only=True):    # 如果出问题,断了,从第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. 模拟Ctrl+V粘贴
        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. 模拟Ctrl+V粘贴
        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. 模拟Ctrl+V粘贴
        # 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批量+人工核查,两者缺一不可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿夏reasonsummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值