Skip to main content
 首页 » 编程设计

python之使用 Python 在 csv 文件中将两行合并为一行

2025年05月04日15bluestorm

我正在尝试将一个 csv 文件中的多行组合在一起。我可以在 Excel 中轻松完成,但我想对数百个文件执行此操作,因此我需要它作为代码。我曾尝试将行存储在数组中,但它似乎不起作用。我正在使用 Python 来完成它。

假设我有一个 csv 文件;

1,2,3 
4,5,6 
7,8,9 

我只想拥有一个这样的csv文件;

1,2,3,4,5,6,7,8,9 

我试过的代码是这样的;

fin = open("C:\\1.csv", 'r+') 
fout = open("C:\\2.csv",'w') 
for line in fin.xreadlines(): 
  new = line.replace(',', ' ', 1) 
  fout.write (new) 
fin.close() 
fout.close() 

你能帮忙吗?

请您参考如下方法:

您应该使用 csv模块,因为在逗号上手动拆分 CSV 非常容易出错(单列可以包含带逗号的字符串,但您最终会错误地将其拆分为多列)。 CSV 模块使用值列表来表示单行。

import csv 
 
def return_contents(file_name): 
    with open(file_name) as infile: 
        reader = csv.reader(infile) 
        return list(reader) 
 
data1 = return_contents('csv1.csv') 
data2 = return_contents('csv2.csv') 
 
print(data1) 
print(data2) 
 
combined = [] 
for row in data1: 
    combined.extend(row) 
 
for row in data2: 
    combined.extend(row) 
 
with open('csv_out.csv', 'w', newline='') as outfile: 
    writer = csv.writer(outfile) 
    writer.writerow(combined) 

该代码为您提供了该方法的基础,但将其扩展到数百个文件会很丑陋。相反,您可能想要 os.listdir将所有文件一个一个地拉到一个目录中,并将它们添加到您的输出中。这就是我将阅读代码打包到return_contents函数中的原因;我们可以只用一组代码对不同的文件重复相同的过程数百万次来进行实际读取。像这样:

import csv 
import os 
 
 
def return_contents(file_name): 
    with open(file_name) as infile: 
        reader = csv.reader(infile) 
        return list(reader) 
 
all_files = os.listdir('my_csvs') 
 
combined_output = [] 
 
for file in all_files: 
    data = return_contents('my_csvs/{}'.format(file)) 
    for row in data: 
        combined_output.extend(row) 
 
with open('csv_out.csv', 'w', newline='') as outfile: 
    writer = csv.writer(outfile) 
    writer.writerow(combined_output)