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

Python如何将txt转xlsx 按$分隔的内容块分别填入对应单元格

问题背景

需要在Python中实现txt到xlsx格式的转换,拆分规则如下:

  • 以$作为全局分隔符,每个分隔符前的连续内容块单独填入一个单元格
  • 分隔符后的内容块依次填入后续单元格,存在多个$时按顺序拆分所有内容块,逐个填入对应位置

示例输入内容:

a
b
c
d
e$fghi
l
m
n
o

原有实现使用csv模块编写,运行结果不符合预期,原有代码如下:

import csv
import openpyxl

input_file = '/MR/Others/prova.csv'
output_file = '/MR/Others/output.xls'

wb = openpyxl.Workbook()
ws = wb.worksheets[0]

with open(input_file) as data:
    reader = csv.reader(data, delimiter='$')
    for row in reader:
        ws.append(row)

wb.save(output_file)
原有代码问题
  • 解析逻辑错误:csv.reader是逐行读取解析的,仅会拆分同一行内的$符号,不会跨多行合并内容后做全局拆分,完全不符合「连续行内容块」的拆分要求
  • 格式匹配错误:openpyxl库仅支持生成.xlsx格式的Excel文件,原有代码输出文件后缀写为.xls,保存后会出现格式不兼容、无法正常打开的问题
正确实现代码

核心逻辑是先读取整个文件的全部内容,全局按$拆分内容块后再写入工作表,不需要依赖csv模块:

import openpyxl
from openpyxl.styles import Alignment

# 注意根据实际文件编码调整encoding参数,避免中文乱码
input_file = '/MR/Others/prova.csv'
output_file = '/MR/Others/output.xlsx'

wb = openpyxl.Workbook()
ws = wb.worksheets[0]

# 读取全部文件内容,全局按$拆分内容块
with open(input_file, 'r', encoding='utf-8') as f:
    content = f.read()
cell_blocks = content.split('$')

# 所有拆分后的内容块按顺序写入同一行的不同单元格
ws.append(cell_blocks)

# 可选:设置单元格自动换行,完整显示块内的多行内容
for col in range(1, len(cell_blocks)+1):
    ws.cell(row=1, column=col).alignment = Alignment(wrap_text=True)

wb.save(output_file)

运行后对应示例输入的效果:

  • A1单元格存放第一个$前的所有连续内容:
a
b
c
d
e
  • B1单元格存放$后的所有连续内容:
fghi
l
m
n
o

如果文件中存在多个$,会自动拆分为对应数量的单元格,按顺序从左到右排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 19:06:44