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

不使用Pandas将CSV列追加至另一CSV时仅添加单个字符的问题排查

问题:将b.csv的列追加到a.csv的number列下时仅添加单个字符

我需要将b.csv中的列追加到a.csv的“number”列下,但当前代码仅添加单个字符而非完整字符串。已尝试谷歌搜索但未找到解决方案,以下是我的代码及两个CSV文件的内容:

原代码

f = open('b.csv')
default_text = f.read()
with open('a.csv', 'r') as read_obj, \
        open('output_1.csv', 'w', newline='') as write_obj:
    csv_reader = reader(read_obj)
    csv_writer = writer(write_obj)
    for row in csv_reader:
        row.append(default_text[8])
        csv_writer.writerow(row)

a.csv内容

name,age,course,school,number
Leo,18,BSIT,STI
Rommel,23,BSIT,STI
Gaby,33,BSIT,STI
Ranel,31,BSIT,STI

b.csv内容

1212121
1094534
1345684
1093245

问题原因

你当前的代码错误在于把b.csv整个文件读成了一个字符串default_text,然后通过default_text[8]取单个字符(字符串索引按字符位置取值),自然每次只能追加一个字符,而非b.csv里的完整行内容。

修正方案

正确的做法是分别读取两个CSV的行,将b.csv的每行内容对应追加到a.csv的行中。以下提供两种可行写法:

写法一:先读取b.csv所有内容到列表(适合小文件)

import csv

# 读取b.csv的所有数字,存入列表
with open('b.csv', 'r') as b_file:
    b_reader = csv.reader(b_file)
    b_numbers = [row[0].strip() for row in b_reader]

with open('a.csv', 'r') as read_obj, open('output_1.csv', 'w', newline='') as write_obj:
    csv_reader = csv.reader(read_obj)
    csv_writer = csv.writer(write_obj)
    
    # 写入表头(a.csv表头已有number列,无需修改)
    csv_writer.writerow(next(csv_reader))
    
    # 逐行配对追加数字
    for row, number in zip(csv_reader, b_numbers):
        row.append(number)
        csv_writer.writerow(row)

写法二:同时逐行读取两个文件(适合大文件,内存占用低)

import csv

with open('a.csv', 'r') as read_obj, \
     open('b.csv', 'r') as b_obj, \
     open('output_1.csv', 'w', newline='') as write_obj:
    csv_reader = csv.reader(read_obj)
    b_reader = csv.reader(b_obj)
    csv_writer = csv.writer(write_obj)
    
    # 写入表头
    csv_writer.writerow(next(csv_reader))
    
    # 逐行读取并配对写入
    for a_row, b_row in zip(csv_reader, b_reader):
        # 取b.csv当前行的第一个元素(完整数字字符串)追加到a.csv行中
        a_row.append(b_row[0].strip())
        csv_writer.writerow(a_row)

效果说明

两种写法都会将b.csv中的每行数字完整追加到a.csv对应行的number列位置,最终生成的output_1.csv内容如下:

name,age,course,school,number
Leo,18,BSIT,STI,1212121
Rommel,23,BSIT,STI,1094534
Gaby,33,BSIT,STI,1345684
Ranel,31,BSIT,STI,1093245

内容的提问来源于stack exchange,提问作者qwerty-uiop

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 17:39:40