Python数据处理问题:Organization Names工作表写入为空
问题排查与修复
问题原因
- 缩进与逻辑位置错误:添加组织数据的代码被放在遍历
organization_patterns的循环内部,且仅在当前模式不匹配时执行——此时is_organization初始值为False,永远不会触发添加;就算匹配到模式,设置is_organization=True后会直接break跳出循环,也不会执行这段append代码。 - 分支结构混乱:原代码中处理垃圾数据的
else块与遍历组织模式的for循环绑定(Python中for循环后的else仅在循环未触发break时执行),导致逻辑层级错乱,后续重复判断也容易引发冲突。
修复后的代码
# Sorting out the data for id, name in data: is_organization = False # 判断是否为组织名称 for pattern in organization_patterns: if pattern in name: is_organization = True break # 匹配到组织模式,直接加入对应列表 if is_organization: organization_names.append((id, name)) else: # 非组织数据,判断是否为垃圾数据 is_junk = False for keyword in junk_keywords: if keyword in name: is_junk = True break if is_junk: junk_data.append((id, name)) else: # 既非组织也非垃圾,归入印度人名列表 indian_names.append((id, name)) # 输出工作簿 output_wb = Workbook() # 写入印度人名工作表 indian_names_sheet = output_wb.create_sheet('Indian Names') indian_names_sheet.cell(row=1, column=1).value = 'ID' indian_names_sheet.cell(row=1, column=2).value = 'Name' for i, (id, name) in enumerate(indian_names): indian_names_sheet.cell(row=i+2, column=1).value = id indian_names_sheet.cell(row=i+2, column=2).value = name # 写入组织名称工作表 organization_names_sheet = output_wb.create_sheet('Organization Names') organization_names_sheet.cell(row=1, column=1).value = 'ID' organization_names_sheet.cell(row=1, column=2).value = 'Name' for i, (id, name) in enumerate(organization_names): organization_names_sheet.cell(row=i+2, column=1).value = id organization_names_sheet.cell(row=i+2, column=2).value = name
关键修改点
- 将组织数据的添加操作移到遍历模式的循环外部,确保只要匹配到任意组织模式,数据就会被正确加入
organization_names - 重构分支逻辑:先处理组织数据,再判断垃圾数据,最后处理正常人名,层级清晰无冲突
- 移除原代码中无效的缩进判断,消除逻辑混乱
内容的提问来源于stack exchange,提问作者Aniket Mishra
相关产品推荐
相关产品推荐

