如何在Python中合并CSV文件的列,行数可变?

0 投票
1 回答
999 浏览
提问于 2025-04-17 08:21

我有两个csv文件。

第一个文件包含了不同IP地址的 traceroutes(最后一项是目标IP),而且每一行的条目数量不一样,因为不同的路径需要不同数量的跳数。

第二个文件则是目标列表和它们在现实世界中的位置坐标。

第一个文件中的一些目标在第二个文件中没有对应的条目,反之亦然。

我该如何把现实世界的坐标添加到第一个csv文件中,确保目标IP匹配呢?这两个文件大致是这样的:

hop1,hop2,hop3,hop4,target1
hop1,hop2,hop3,hop4,hop5,hop6,target2

target99,position    

1 个回答

0

当然可以!请看下面的内容:

在编程中,有时候我们需要把一些数据从一个地方转移到另一个地方。这就像把水从一个杯子倒到另一个杯子一样。这个过程可能会涉及到不同的格式,比如把数字变成文字,或者把图片变成文件。

为了让这个过程更顺利,我们通常会使用一些工具或者方法。这些工具就像是我们在厨房里用的刀、锅、铲子,帮助我们更方便地完成任务。

在编程中,常见的操作有读取数据、处理数据和保存数据。读取数据就像是打开一个文件,看看里面有什么;处理数据就像是把食材切好、炒熟;保存数据则是把做好的菜放到盘子里,准备上桌。

有些时候,我们还需要检查数据是否正确,这就像是尝一尝菜的味道,确保它好吃。这样,我们才能保证最终的结果是我们想要的。

总之,编程就像做菜一样,需要一些步骤和工具,才能把原材料变成美味的成品。

import csv

ip_file = open("ipfile.csv")
position_file = open("positionfile.csv")
output = open("output.csv", "wt")

ips = {}    

# create a CSV reader for the proper csv file with locations:
reader = csv.reader(position_file)
for line in reader:
    ips[line[0]] = line[1]


#now you have the IP + location association

for line in ip_file.readlines():
    ip = line.split(",")[-1].strip()
    output.write(line.strip() + ", " + (ips[ip] if ip in ips else "location unknown") + "\n" )

output.close()

撰写回答