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

Python 3.5实现多打印语句输出至CSV及自定义格式导出求助

搞定自定义格式导出的问题啦~

我看你现在的状况是:已经能在终端打出想要的自定义格式,但卡在了把这个格式内容写到文件里——当前代码只是把原CSV的行直接复制到新文件,不是你要的那个message:: { ... }结构对吧?

来,咱们一步步调整代码,分两种常见场景给你方案:


场景1:导出成和终端打印一样的自定义文本格式

如果你的目标是把那种带message:: { ... }的结构化文本存成文件,其实不用csv.writer,直接用文件的write()方法就行。记得把内容拼成字符串,加上换行符保持格式:

import csv

with open('file.csv','r') as csv_file:
    csv_reader = csv.reader(csv_file)
    next(csv_reader)  # 跳过表头行
    sku_counter = 0
    # 这里可以命名成txt更直观,要是坚持用csv后缀也没问题
    with open('newfile.txt','w') as new_file:  
        for row in csv_reader:
            sku_counter += 1
            # 把你要的格式拼成完整字符串
            output_content = f"message:: {{\n Message ID : {sku_counter}\n sku : {row}\n}}\n"
            # 写入文件
            new_file.write(output_content)
            # 要是还想在终端看,就保留打印
            print(output_content.strip())

跑起来之后,newfile.txt里的内容就和你终端打印的一模一样了。


场景2:导出成包含自增ID的新CSV文件

如果你其实是想把自增的Message ID和原CSV的两列数据合并成新的CSV(比如三列:ID、原列1、原列2),那调整csv_writer.writerow()的参数就行:

import csv

with open('file.csv','r') as csv_file:
    csv_reader = csv.reader(csv_file)
    original_header = next(csv_reader)  # 先拿原表头
    sku_counter = 0
    # 加newline=''是官方推荐的写法,避免CSV出现多余空行
    with open('newfile.csv','w', newline='') as new_file:
        csv_writer = csv.writer(new_file)
        # 先写新表头,把Message ID加在最前面
        csv_writer.writerow(["Message ID"] + original_header)
        for row in csv_reader:
            sku_counter += 1
            # 把自增ID和原行数据拼起来写入
            csv_writer.writerow([sku_counter] + row)
            # 终端打印的部分保留不变
            print("message:: {")
            print(" Message ID :",sku_counter)
            print(" sku :", row)

这样生成的新CSV就完全符合规范,包含你需要的自增ID列啦。


小补充

要是你想要的自定义格式是更规范的结构化数据(比如JSON),可以试试Python的json模块来序列化,格式会更严谨;另外处理CSV时记得用newline='',能避免很多换行相关的小坑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:31:04