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

Python转换Excel到CSV时保留TEXT列换行空格的方案咨询

问题描述

我有一份Excel数据,最后一列TEXT包含换行和空格;使用现有Python脚本转换为CSV后,TEXT列的换行格式丢失,数据被打乱。需要修改脚本,让TEXT列保留原有的换行和空格格式。

原脚本如下:

import pandas as pd
import os
import numpy as np


WD = r'XXX'
os.chdir(WD) 

for file in os.listdir(WD):
    if file.endswith('.xlsx'):
        FILE = file

        sheet_names = pd.ExcelFile(FILE).sheet_names  

        for sn in sheet_names:
            OUTPUT_FILE = '{}_{}'.format(sn,FILE.replace('.xlsx','.csv'))
            df = pd.read_excel(FILE,)
            print(FILE, sn)

            for col in df.columns.to_list():
                df[col] = df[col].map({True: '', False: ''}).fillna(df[col])


                cn = ['IN', 'NAME', 'TEXT']
                df = df.reindex(columns = cn)

                df.to_csv(OUTPUT_FILE,sep='|',encoding='utf-8-sig',index=False)
解决方法

问题分析

原脚本存在两个核心问题:

  1. 读取Excel时未指定对应工作表,导致每次循环都读取默认工作表;
  2. 导出CSV时未处理含换行的字段,默认行为会破坏TEXT列的换行格式。

修改后的脚本

import pandas as pd
import os
import csv  # 导入csv模块用于设置引号规则

WD = r'XXX'
os.chdir(WD) 

for file in os.listdir(WD):
    if file.endswith('.xlsx'):
        FILE = file
        excel_file = pd.ExcelFile(FILE)
        sheet_names = excel_file.sheet_names  

        for sn in sheet_names:
            OUTPUT_FILE = '{}_{}'.format(sn, FILE.replace('.xlsx', '.csv'))
            # 指定读取当前循环的工作表
            df = excel_file.parse(sn)
            print(FILE, sn)

            # 处理布尔值为空白的逻辑(保留原有需求)
            for col in df.columns.to_list():
                df[col] = df[col].map({True: '', False: ''}).fillna(df[col])

            # 重新指定列顺序(修正缩进,避免重复执行)
            cn = ['IN', 'NAME', 'TEXT']
            df = df.reindex(columns=cn)

            # 导出CSV时设置参数保留换行格式
            df.to_csv(
                OUTPUT_FILE,
                sep='|',
                encoding='utf-8-sig',
                index=False,
                quoting=csv.QUOTE_ALL,  # 给所有字段加引号,确保含换行的字段被正确识别
                lineterminator='\n'  # 统一行分隔符,避免跨平台格式问题
            )

关键修改点

  • 指定工作表读取:用excel_file.parse(sn)替代pd.read_excel(FILE),确保每次读取当前循环的目标工作表;
  • 修复缩进错误:将列重排逻辑移出列循环,避免重复执行导致的异常;
  • CSV导出参数优化:添加quoting=csv.QUOTE_ALL,让所有字段被引号包裹,确保TEXT列中的换行符不会被当成行分隔符,从而完整保留原有格式;
  • 导入csv模块:用于调用引号规则的常量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 01:21:05