当前位置: 首页 > news >正文

设计师网站推荐网站开发就业薪酬

设计师网站推荐,网站开发就业薪酬,长春网站建设小程,简单wordpress主题目录 背景分析代码代码解读代码总体结构1. load_pattern_from_excel 函数2. match_and_append_pattern 函数3. main 函数总结 最终的效果#xff1a; 今天不分享netmiko#xff0c;今天分享一个用python提升工作效率的小案例#xff1a;acl梳理时的信息匹配。 背景 最近同事… 目录 背景分析代码代码解读代码总体结构1. load_pattern_from_excel 函数2. match_and_append_pattern 函数3. main 函数总结 最终的效果 今天不分享netmiko今天分享一个用python提升工作效率的小案例acl梳理时的信息匹配。 背景 最近同事在梳理ACL需要对每一条destination为主机的条目针对该目的地址主机标记出这台主机的作用。 工作量大重复性高易错率高。 所以使用python进行自动化。 分析 首先同事给出了一版已经做好匹配的文档如下图模拟 根据给出的excel拆分出对应的数据放在一个sheet中我这里命名为pattern 第一列为IP第二列开始为给出的主机信息 分析python脚本执行思路 读取patternsheet中的数据以字典方式存入key为第一列的IPvalue为后续的主机信息以列表存储循环对除了pattern sheet的其他sheet每一行数据的第一列即acl的每一个rule去匹配刚刚第一步存储的字典的key匹配成功后在这一行后单元格中填入key对应的value的值。 代码 import pandas as pd import numpy as npdef load_pattern_from_excel(file_path: str) - dict:从指定的Excel文件中读取pattern表内容并返回一个字典。字典的键为第一列的值值为每行后续列的内容列表去除NaN。参数:file_path (str): Excel文件的路径。返回:dict: 包含键值对的字典键为第一列的内容值为该行后续列的列表去除NaN。# 读取Excel文件中的 pattern sheetdf pd.read_excel(file_path, sheet_namepattern)# 将第一列作为字典的键后续列的内容作为值存储在字典中去除NaNpattern {row[0]: [item for item in row[1:] if pd.notna(item)] for row in df.itertuples(indexFalse, nameNone)}return patterndef match_and_append_pattern(file_path: str, pattern: dict):读取Excel文件中除pattern和indexsheet之外的所有sheet检查第一列是否包含pattern中的key匹配后将对应value的每个元素写入相邻单元格跳过NaN。参数:file_path (str): Excel文件的路径。pattern (dict): 包含匹配模式的字典键为要匹配的字符串值为需要写入的列表无NaN。# 读取Excel文件xls pd.ExcelFile(file_path)# 获取所有sheet名称排除 pattern 和 indexsheetsheets_to_process [sheet for sheet in xls.sheet_names if sheet not in [pattern, indexsheet]]# 创建一个字典来存储每个sheet的更新内容updated_sheets {}# 遍历需要处理的sheetfor sheet_name in sheets_to_process:# 读取当前sheet的数据df pd.read_excel(xls, sheet_namesheet_name)# 遍历第一列的每一行检查是否包含pattern的keyfor idx, cell_value in enumerate(df.iloc[:, 0]):for key, values in pattern.items():if key in str(cell_value): # 检查第一列单元格是否包含key# 在匹配的行写入values中的每个非NaN元素start_col 1 # 从B列开始写入for value in values:if pd.notna(value): # 仅写入非NaN的值if start_col df.shape[1]:df.insert(start_col, fNew_Col_{start_col}, None) # 添加新列df.iat[idx, start_col] valuestart_col 1break # 只匹配第一个找到的key并写入# 将更新后的DataFrame存储到字典中updated_sheets[sheet_name] df# 将更新后的内容写回到新的Excel文件中with pd.ExcelWriter(Updated_ACL.xlsx) as writer:for sheet_name, updated_df in updated_sheets.items():updated_df.to_excel(writer, sheet_namesheet_name, indexFalse)print(匹配和追加已完成文件已保存为 Updated_ACL.xlsx.)def main():file_path ACL.xlsx# 加载 pattern 表内容pattern load_pattern_from_excel(file_path)# 进行匹配并更新其他 sheetmatch_and_append_pattern(file_path, pattern)if __name__ __main__:main() 代码解读 这版代码实现了从Excel文件中提取特定的模式pattern并将这些模式应用到其他工作表中对匹配的内容进行扩展性写入。以下是对代码的逐步讲解以便更详细地了解其逻辑和功能 代码总体结构 load_pattern_from_excel 函数从Excel文件的 pattern sheet中读取数据并生成一个以字典形式存储的 pattern 变量。match_and_append_pattern 函数将 pattern 变量的内容应用到 ACL.xlsx 中除 pattern 和 indexsheet 之外的所有sheet找到匹配项后将模式中对应的内容写入匹配行的指定位置。main 函数作为脚本的主函数负责调用 load_pattern_from_excel 和 match_and_append_pattern 函数完成整个流程。 1. load_pattern_from_excel 函数 def load_pattern_from_excel(file_path: str) - dict:从指定的Excel文件中读取pattern表内容并返回一个字典。字典的键为第一列的值值为每行后续列的内容列表去除NaN。参数:file_path (str): Excel文件的路径。返回:dict: 包含键值对的字典键为第一列的内容值为该行后续列的列表去除NaN。# 读取Excel文件中的 pattern sheetdf pd.read_excel(file_path, sheet_namepattern)# 将第一列作为字典的键后续列的内容作为值存储在字典中去除NaNpattern {row[0]: [item for item in row[1:] if pd.notna(item)] for row in df.itertuples(indexFalse, nameNone)}return pattern功能解释 load_pattern_from_excel 函数的作用是读取Excel文件中特定的sheet在这里是pattern并将其内容格式化为一个字典 pattern。字典的键来自于 pattern sheet 的第一列表示需要在其他工作表中匹配的字符串。字典的值是每行后续列的内容列表并且过滤掉所有 NaN 值。这意味着如果有空白单元格它们不会被纳入到 pattern 中。 实现细节 pd.read_excel(file_path, sheet_namepattern) 读取指定的Excel文件的 pattern sheet。使用 itertuples 遍历每一行并构建一个字典推导式 {row[0]: [item for item in row[1:] if pd.notna(item)]}通过列表推导式过滤掉 NaN 值。 2. match_and_append_pattern 函数 def match_and_append_pattern(file_path: str, pattern: dict):读取Excel文件中除pattern和indexsheet之外的所有sheet检查第一列是否包含pattern中的key匹配后将对应value的每个元素写入相邻单元格跳过NaN。参数:file_path (str): Excel文件的路径。pattern (dict): 包含匹配模式的字典键为要匹配的字符串值为需要写入的列表无NaN。# 读取Excel文件xls pd.ExcelFile(file_path)# 获取所有sheet名称排除 pattern 和 indexsheetsheets_to_process [sheet for sheet in xls.sheet_names if sheet not in [pattern, indexsheet]]# 创建一个字典来存储每个sheet的更新内容updated_sheets {}# 遍历需要处理的sheetfor sheet_name in sheets_to_process:# 读取当前sheet的数据df pd.read_excel(xls, sheet_namesheet_name)# 遍历第一列的每一行检查是否包含pattern的keyfor idx, cell_value in enumerate(df.iloc[:, 0]):for key, values in pattern.items():if key in str(cell_value): # 检查第一列单元格是否包含key# 在匹配的行写入values中的每个非NaN元素start_col 1 # 从B列开始写入for value in values:if pd.notna(value): # 仅写入非NaN的值if start_col df.shape[1]:df.insert(start_col, fNew_Col_{start_col}, None) # 添加新列df.iat[idx, start_col] valuestart_col 1break # 只匹配第一个找到的key并写入# 将更新后的DataFrame存储到字典中updated_sheets[sheet_name] df# 将更新后的内容写回到新的Excel文件中with pd.ExcelWriter(Updated_ACL.xlsx) as writer:for sheet_name, updated_df in updated_sheets.items():updated_df.to_excel(writer, sheet_namesheet_name, indexFalse)print(匹配和追加已完成文件已保存为 Updated_ACL.xlsx.)功能解释 该函数的主要功能是遍历 ACL.xlsx 中所有的工作表除 pattern 和 indexsheet然后检查每个工作表的第一列中是否包含 pattern 中的任何键。一旦找到匹配的键函数会从B列开始按顺序将 pattern 中对应的值逐个写入单元格每个值占据一个单元格。如果值为 NaN 则跳过。 实现细节 读取所有工作表使用 pd.ExcelFile(file_path) 读取Excel文件然后过滤出需要处理的工作表。遍历每个工作表使用 for sheet_name in sheets_to_process 逐个读取并处理每个工作表。匹配和写入数据 for idx, cell_value in enumerate(df.iloc[:, 0]) 遍历第一列的每一行检查每个单元格是否包含 pattern 中的任何键。如果匹配成功则按顺序将 values 列表中的每个元素写入到匹配行的相邻单元格从 B 列开始即 start_col 1。在写入时使用 pd.notna(value) 跳过 NaN 值。如果需要的列数超过现有列则动态添加新列 df.insert(start_col, fNew_Col_{start_col}, None)。 保存更新后的工作表处理完所有工作表后将结果保存到新的Excel文件 Updated_ACL.xlsx。 3. main 函数 if __name__ __main__:file_path ACL.xlsx# 加载 pattern 表内容pattern load_pattern_from_excel(file_path)# 进行匹配并更新其他 sheetmatch_and_append_pattern(file_path, pattern)功能解释 首先加载 pattern sheet 的内容并生成 pattern 字典。然后调用 match_and_append_pattern 函数对所有目标工作表进行处理并输出结果。 总结 代码逻辑先构建模式数据字典 pattern然后匹配并写入其他工作表。数据写入匹配成功的 value 列表内容依次写入相邻单元格跳过 NaN 值。输出文件最终将处理结果保存到新文件 Updated_ACL.xlsx。 最终的效果 让每一个sheet都如下图一样
http://www.dnsts.com.cn/news/13064.html

相关文章:

  • 上海 企业网站建设网页个人主页
  • 河南金城建设工程有限公司网站公司网站建设费用入什么科目
  • 微信网站怎么做的好处高端网站建设制作设计
  • wordpress网站统计插件下载一般使用的分辨率的显示密度是()
  • 企业网站登录天津网站建设优选企业
  • 离型剂技术支持东莞网站建设做视频网站需要多少带宽
  • 门户网站制作流程博客网站开发属于软件设计嘛
  • 饰品网站模板wordpress列类型
  • 上海网站推广多少钱seo网络营销教程
  • 北京seo网站推广门户网站定义
  • 网站做系统下载如何做好网络销售
  • 网站模板 小说网站开发双语
  • 个人网站 百度收录做美妆网站的关键词
  • 青岛网站建设团队营销渠道方案
  • 哪家做网站公司深圳网约车
  • 系统开发北京网站建设口碑营销的例子
  • 建设电子商务网站需要什么设计师专业
  • 如何通过cpa网站做推广做网站干什么用
  • 建网站的要求网站建设 宣传
  • 找图纸的网站东营在建项目
  • 网站分析流程做设计需要素材的常用网站有哪些
  • wordpress 多站点 子目录wordpress主题一点就升级
  • html购物网站模板新闻单位网站建设的意义
  • 在线支付网站建设网页布局分析
  • 怎么做网站推广电话wordpress缓存插件比拼
  • 《高性能网站建设指南有什么做照片书的网站
  • 重庆忠县网站建设公司推荐wordpress 链接 弹窗
  • 可视化设计最重要的是确定网站的html网页基本结构
  • windows8风格网站模板外链系统
  • 做生存曲线的网站 域名经常更换