如何合并CSV两行对应列内容并保留列数?能否用CSV库实现?
用Python CSV库实现两行CSV内容合并
需求回顾
原始CSV内容:
Superman/, 250lbs, Batman/, 180lbs Clark Kent, , Bruce Wayne,
目标合并后格式:
Superman/Clark Kent, 250lbs, Batman/Bruce Wayne, 180lbs
实现方案
完全可以用Python自带的csv库实现,不需要用extend()(它会增加列数,不符合需求)。核心思路是将两行的对应列元素直接拼接,第二行空值不影响第一行内容,最终列数和原文件一致。
代码示例
import csv # 读取原始文件并处理 with open('input.csv', 'r', newline='') as in_file: # 指定分隔符为", ",确保读取的元素不带多余空格 reader = csv.reader(in_file, delimiter=', ') # 把所有行转为列表(这里仅两行) all_rows = list(reader) if len(all_rows) >= 2: row_top, row_bottom = all_rows[0], all_rows[1] # 对应列元素拼接,空值拼接后不改变原内容 merged_row = [f"{col_top}{col_bottom}" for col_top, col_bottom in zip(row_top, row_bottom)] # 写入合并后的内容 with open('output.csv', 'w', newline='') as out_file: writer = csv.writer(out_file, delimiter=', ') writer.writerow(merged_row)
关键细节说明
- 指定
delimiter=', ':因为原始CSV的分隔符是逗号加空格,这样读取的元素不会带前导空格,保证拼接后的格式正确。 zip(row_top, row_bottom):将两行的对应列元素一一配对,确保每一列的内容对应合并。- 空值处理:第二行的空字符串和第一行元素拼接后,结果就是第一行的原始值,正好符合需求。
内容的提问来源于stack exchange,提问作者easythrees
相关产品推荐
相关产品推荐

