竖线分隔CSV转Xlsx后列未拆分的Python脚本修复需求
解决竖线分隔CSV转Xlsx时列未拆分的问题
问题原因
你的pd.read_csv()默认使用逗号作为分隔符,但你的CSV文件以竖线(|)分隔,导致所有内容被识别为单列。同时数据中存在双引号包裹的字段,需要配置对应的解析参数才能正确识别列。
修改后的Python脚本
先执行环境激活命令:
source /opt/infa/MDW-env/bin/activate
再运行以下Python代码:
import os import pandas as pd os.chdir("/opt/alb_test/alb/albt1/Source/alb/al/conversion/scripts") # 读取竖线分隔的CSV,正确解析双引号包裹的字段 df_new = pd.read_csv( 'sourcefile.csv', sep='|', # 指定列分隔符为竖线 quotechar='"', # 指定字段的包裹符为双引号 keep_default_na=False, # 保留空列的原始空值,避免自动转为NaN skipinitialspace=False # 不跳过分隔符后的空格(根据数据实际情况调整) ) # 保存为Xlsx文件(用with语句更安全,自动处理资源释放) with pd.ExcelWriter('sourcefile.xlsx') as GFG: df_new.to_excel(GFG, index=False)
关键参数说明
sep='|':这是解决列未拆分的核心配置,明确告知pandas使用竖线作为列的分隔符。quotechar='"':让pandas正确识别双引号包裹的字段内容,避免误解析引号内的字符。keep_default_na=False:防止文件开头/结尾的空列被自动填充为NaN,保持原始空值状态。
额外优化:Bash邮件脚本的问题修复
你的bash脚本中mailx重复使用了-s(主题)参数,会导致主题被覆盖,同时文件匹配格式有误,修改后如下:
#!/bin/bash cd /opt/alb_test/alb/albt1/Source/alb/al/conversion/scripts ls *.xlsx -1 > test.txt # 匹配生成的xlsx格式文件 while read line do mailx -s "Test: Conversion Files" -a "${line}" prakash@gmail.com << EOM Hi, Testing Conversion EOM done < test.txt
修改点
- 将
ls *.xls改为ls *.xlsx,匹配你实际生成的文件格式。 - 合并重复的
-s参数,设置唯一的邮件主题。 - 给
${line}添加双引号,避免文件名含空格时出现错误。
内容的提问来源于stack exchange,提问作者Sherin Shaziya
相关产品推荐
相关产品推荐

