You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Openpyxl与Python处理Excel:删除空格并替换为逗号

问题

我是Python新手,需要重构一份大型电子表格,需求如下:

  • 删除L、M列每个单元格内的所有空格
  • 随后用逗号分隔值,但需将“TL:Accepted”这类带冒号的内容保留为单个值

我有Pandas使用经验,可以结合Openpyxl实现,目前的代码如下:

# imports
import openpyxl as py
from openpyxl import Workbook, load_workbook

# create a workbook and active worksheet
wb = load_workbook(r'MERGEDSHEETS.xlsx')
print(wb.sheetnames)
ws = wb.active

for sheet[L2:, M2:]:
    py.strip()

wb.save(r'MERGEDSHEETSv2.xlsx')
解决方案

你的现有代码存在语法错误:for sheet[L2:, M2:] 不是合法的遍历方式,py.strip() 也无法直接操作单元格值。以下是两种可行的实现方案:

方法一:使用Openpyxl逐单元格处理

适合需要保留Excel原格式的场景:

import openpyxl
import re

# 加载目标工作簿和激活工作表
wb = openpyxl.load_workbook(r'MERGEDSHEETS.xlsx')
ws = wb.active

# 目标列:L对应第12列,M对应第13列
target_cols = [12, 13]
# 正则规则:匹配带冒号的完整项(如TL:Accepted)或非逗号分隔的普通项
item_pattern = re.compile(r'(\w+:\w+|[^,]+)')

for col in target_cols:
    # 从第2行开始遍历所有非空单元格
    for row in range(2, ws.max_row + 1):
        cell = ws.cell(row=row, column=col)
        if not cell.value:
            continue
        
        # 步骤1:移除单元格内所有空格
        no_spaces = str(cell.value).replace(' ', '')
        # 步骤2:提取所有有效项并去重
        valid_items = item_pattern.findall(no_spaces)
        unique_items = list(dict.fromkeys(valid_items))  # 保持顺序去重
        # 步骤3:用逗号重新连接
        cell.value = ', '.join(unique_items)

# 保存处理后的文件
wb.save(r'MERGEDSHEETSv2.xlsx')

方法二:使用Pandas批量处理(更适合大型表格)

Pandas处理海量数据效率更高,若无需严格保留原Excel格式,优先选择:

import pandas as pd
import re

# 读取Excel文件
df = pd.read_excel(r'MERGEDSHEETS.xlsx')

def process_column_value(value):
    if pd.isna(value):
        return value
    # 移除所有空格
    cleaned = str(value).replace(' ', '')
    # 提取带冒号的项或普通项
    item_pattern = re.compile(r'(\w+:\w+|[^,]+)')
    valid_items = item_pattern.findall(cleaned)
    # 去重后用逗号连接
    unique_items = list(dict.fromkeys(valid_items))
    return ', '.join(unique_items)

# 处理L列和M列(注意列名需与表格实际列名一致)
df['L'] = df['L'].apply(process_column_value)
df['M'] = df['M'].apply(process_column_value)

# 保存结果,使用openpyxl引擎可保留部分格式
df.to_excel(r'MERGEDSHEETSv2.xlsx', index=False, engine='openpyxl')

内容的提问来源于stack exchange,提问作者tozzy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 11:15:34