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

怎样创建设计公司网站北京网站定制设计开发公司

怎样创建设计公司网站,北京网站定制设计开发公司,迅捷在线图片编辑器,上海工业设计公司目录 背景分析代码代码解读代码总体结构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.w-s-a.com/news/268761/

相关文章:

  • 旅游网站开发毕业设计开题报告青岛网站建设服务公司
  • 人员调动在网站上怎么做网站开发课程意见和建议
  • 卓训网是个什么网站wordpress命令执行时间
  • 网站建设需要做哪些工作网片焊接
  • 网站优化方案dedecms win8风格网站模板
  • 企业如何制作网站管理系统慈溪住房和城乡建设部网站
  • 青岛网站建设有哪些公司区块链网站开发价格
  • 怎么设置网站的logo微信公众号的h5网站开发6
  • 粉色的网站绍兴市建设局网站
  • 个人网站的基本风格是wordpress 模板选择
  • 南昌专业做网站公司有哪些广州市住房城乡建设部门户网站
  • 福州网站建设团队淘宝联盟网站怎么建设
  • 福州企业网站建站模板国内黑色风格的网站
  • 好看的网站首页设计android移动开发
  • 域名注册完成后如何做网站域名 删除 wordpress
  • wordpress xml导入大小东莞seo优化方案
  • 网站建设效益网站销售怎么做的
  • 利用网站空间做代理设计方案的格式范文
  • 无锡建设工程质量监督网站遵义做手机网站建设
  • 衡阳商城网站制作ps做网站首页规范尺寸
  • 微信网站应用开发营销推广的方案
  • 广州做网站商城的公司制作一个app的完整流程
  • 湖南城乡建设厅网站163注册企业邮箱
  • 做网站怎么调整图片间距织梦做的网站如何去掉index
  • 凡科网免费建站步骤及视频网页设计基础教程第二版课后答案
  • 建设一个旅游网站毕业设计企业网站要更新文章吗
  • 做网站需要简介中山网站设计公司
  • 网站怎么做导航栏微信公众号官网登录
  • 1_ 掌握网站开发的基本流程 要求:熟悉网站开发与设计的基本流程.电子商城网站开发
  • 百度网站怎么建设河北省工程造价信息网官网