使用Python将现有CSV文件中的一列插入到另一个CSV文件中



我有两个具有相同列数的CSV文件。

我想将文件1作为第一列插入到file2中,并将输出作为一个新的CSV文件生成。

输入文件:

file1:
offset;
1;
2;
3;
.
.
.
n
file2:
status;value
ok;12
nok;13
ok;14
.
.
.
ok;n

需要的输出文件:

offset;status;value
1;ok;12
2;nok;13
3;ok;14
.;.;
.;.;
.;.;
n;ok;n

我将从代码示例开始(我直接基于您在帖子中提供的数据的test1和test2.csv):

## Read first csv into list
f = open("test1.csv", "r")
csv1 = f.readlines()
f.close()
## Read second csv into list
f = open("test2.csv", "r")
csv2 = f.readlines()
f.close()
## Create new csv header
header = csv1[0].replace("n", "") + "," + csv2[0].replace("n", "")
## Create data list and append lines from csv1 and csv2
data = []
for x in range(1, len(csv1)):
data.append(csv1[x].replace("n", "") + "," + csv2[x].replace("n", "") + "n")
## Print new header and data to a new csv file
f = open("test3.csv", "w")
f.write(header + "n")
f.writelines(data)

注释非常直接,让您知道每个代码块完成了什么。

这样做是在假设没有键将数据从一个文件关联到另一个文件的情况下(比如在数据库中,您有一个ID来关联表之间的数据)。

您也可以使用内置的csv库并将其分解为函数等,但对于如此简单的事情,我发现像我这样写出来更容易。

输出如下:

offset,status,value
1,ok,12
2,nok,13
3,ok,14

您可以使用以下命令同时遍历两个文件:

file1 = open("test1.csv", "r")
file2 = open("test2.csv", "r")
file3 = open("test3.csv", "w")
for line1, line2 in zip(file1, file2):
file3.write(line1+line2+"n")
file1.close()
file2.close()
file3.close()

假设两个文件有相同的行数。如果这不是真的,这种方法将只连接行,直到较短的文件结束。例如:如果file1有10行,file2有15行,输出文件将忽略file2的最后5行。

最新更新