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

如何让Python csv.writer/writerows写入同一行单元格而非换行

Python CSV写入:如何将内容写入同一行的相邻单元格

问题根源分析

你的代码存在两个核心问题,导致输出不符合预期:

  1. writerow()参数错误:csv.writer的writerow()方法接收可迭代对象(如列表),如果直接传入拼接好的字符串,会把字符串拆成单个字符作为独立单元格,这就是表头被拆成U,R,L,...的原因。
  2. 多次调用writerow()拆分单行内容:你先单独写入URL一行,再循环写入每个分数一行,自然每个内容都会单独占一行。正确逻辑应该是把同一行的所有内容(URL+所有分数)整理成一个列表,一次性写入。

修正后的完整代码

import csv
import json

filename = 'test1.csv'
json_files = ["1.json", "2.json", "3.json"]  # 替换为你的实际JSON文件列表

with open(filename, mode="w", newline='', encoding='utf-8') as file:
    writer = csv.writer(file)
    
    # 写入表头
    with open('1.json', 'r', encoding='utf-8') as f:
        data = json.load(f)
        categories = list(data['categories'].keys())
        # 用列表生成表头,避免字符拆分
        header = ["URL"] + categories
        writer.writerow(header)
    
    # 处理每个JSON文件,生成单行数据
    for file_path in json_files:
        with open(file_path, 'r', encoding='utf-8') as f:
            data = json.load(f)
            # 收集当前行的所有内容:URL + 对应分类的分数
            row = [url]  # 替换为你的实际URL变量
            for category in categories:
                score = data['categories'][category]['score']
                row.append(score)
            # 一次性写入整行,所有值自动进入相邻单元格
            writer.writerow(row)

关键修改说明

  1. 表头生成:不再拼接字符串,而是用["URL"] + categories生成列表,writerow()会自动将列表每个元素写入相邻单元格。
  2. 单行内容收集:处理每个JSON文件时,先将URL放入列表,再循环追加所有分数,最后一次性调用writerow(),保证整行内容在同一行的不同单元格。
  3. 缩进修正:修复原代码中缩进错误的问题,确保文件操作和循环逻辑正确执行。
  4. newline=''参数:避免Windows系统下写入CSV时出现多余空行。

修正后输出会完全匹配你的期望格式:URL和对应分数在同一行,每个值占据相邻单元格。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 19:43:03