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

标签 python python-3.x

我正在尝试将一个 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)

关于python - 使用 Python 在 csv 文件中将两行合并为一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53670209/

相关文章:

python-3.x - 安装 pip3 时遇到问题

python3.5.2 从文件中删除所有匹配的字符

python - Cherrypy base64 图像编码未按预期工作

python - 使用 scikit-bio write 写入多个 fasta 条目

python - 使用 Python 计算点密度

python-3.x - 在机器学习中,编码非分层分类特征的最佳方法是什么?

python - 如何使用 plotly py.image.save_as 指定保存图像的目录

python - 模块 'socket' 没有属性 'getsockname'

python - 无需下载即可查找在线视频的视频尺寸

python - pandas 系列查找具有特定作为最后一个字符的字符串