繁体   English   中英

用python比较两种不同格式的csv文件

[英]compare two different formats csv fils with python

我需要比较两种不同格式的 CSV 文件,第一个文件包含主机名和 IP 地址,第二个文件包含主机名、IP 地址、操作系统类型和正常运行时间。 目标是从第一个文件中获取主机名并将其与第二个文件中的主机名进行比较,如果没问题,代码会给我操作系统类型和正常运行时间。 这是我对代码的第一次测试。

import sys

# f = sys.stdin
# If you need to open a file instead:
f_vm_srv = open('serveurs.csv')
f_srv_list =  open('fqdn-ip.txt')

for line1 in f_srv_list:
    hostname=line1.strip().split(";")
    for line in f_vm_srv:
        fields = line.strip().split(";")
        if fields[0] == hostname[0]:
            print (fields[12])

f_vm_srv.close()
f_srv_list.close()

但是这段代码只给了我第一行结果。

尝试将您的代码更改为:

import sys

# f = sys.stdin
# If you need to open a file instead:
f_vm_srv = open('serveurs.csv')
f_srv_list =  open('fqdn-ip.txt')

# read in the lines from the file
f_svr_list_lines = f_srv_list.readlines()
f_vm_srv_lines = f_vm_srv.readlines()

for line1 in f_svr_list_lines:
    hostname=line1.strip().split(";")
    for line in f_vm_srv_lines:
        fields = line.strip().split(";")
        if fields[0] == hostname[0]:
            print (fields[12])

f_vm_srv.close()
f_srv_list.close()

您还可以考虑将您的文件作为 Pandas DataFrames 读取(请参阅 tha pandas read_csv函数)。

如果您将不得不在 python 中大量使用 csv 并且需要在那时执行复杂的操作,那么我强烈建议您熟悉pandas

您将能够使用read_csv轻松加载 2 个文件,并使用["column_name"]运算符轻松提取列。

您可以使用Pandas库,这对读取 csv 很有用。

假设file1是包含 IP 和主机名的文件,另一个文件是file2 此外,我想这两个文件的组成如下:

IP_value;hostname_value //file1
IP_value;hostname_value;OStype_value;uptime_value //file2

所以,我阅读了 csv 文件:

import sys
import pandas as pd

df1 = pd.read_csv('file1.csv', sep=';', names=['ip', 'hostname'])
df2 = pd.read_csv('file2.csv', sep=';', names=['ip', 'hostname', 'ostype', 'uptime'])

现在,已经创建了两个Dataframe对象。 您遍历df1df2 ,如果ip的的df1等于ip的的df2 ,你可以做你想做的。

只是一个提示:您可以使用df1['ip']访问 ip 值!

for ip1 in df1['ip']:
    for ip2 in df2['ip']:
        if ip1 == ip2:
            //Your code

另一种方法是使用Numpy库的where函数或Pandas库的函数merge

特别是,如果您想检查某个列上的等于值,则函数merge非常有用。 您将在一个新的数据帧( df3 )中合并两个数据帧(在您的情况下为df1df2 ):

df3 = pd.merge(df1, df2, on=['ip'], how='inner')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM