【问题标题】:Reading two files, a csv and xls, and bring columns from csv to xls based on subnet(csv)/ip(xls) match读取两个文件,一个 csv 和 xls,并根据子网(csv)/ip(xls)匹配将列从 csv 带到 xls
【发布时间】:2016-07-28 18:06:59
【问题描述】:

我正在尝试制作一个程序来读取两个文件,一个 csv 和 xls,并使用一些 python 逻辑来解析和传输某些列从 csv 到 xls,基于 ip/子网匹配。

csv 在 B、C 和 D 列中包含子网、掩码和 cidr。(csv 大约有 10k 行,不会全部使用。)

xls在C列有ip地址。(xls有5009行),每个ip地址对应它所在的子网。

例如,csv colB,C,D 中的此信息:

subnet        mask          cidr
10.120.10.0  255.255.255.0  /24

对应于 xls colB 中的此信息(这些 ip 不连续。它们位于随机行上。)

10.120.10.12
10.120.10.13

我需要移植到 xls 文件的 csv 中的列是 G、H、I、K 和 M。

我正在尝试找到一种方法将 xls 文件中的每个 ip 与 csv 中的子网匹配,并将 csv 列 G、H、I、K 和 M 中的数据带到相应 ip 的行在 xls 中。

对不起,如果这令人困惑,这是一个难以解决的问题,我只是 python 的初学者。

【问题讨论】:

    标签: python excel python-3.x csv subnet


    【解决方案1】:

    首先你可以试试这个脚本

    import openpyxl
    from xlrd import open_workbook
    import csv
    
    #To read XLX
    
    book = open_workbook('IPADR.xlsx')
    sheet = book.sheet_by_index(0)
    keys = [sheet.cell(row_index, 0).value for row_index in xrange(sheet.nrows)]
    print keys
    
    # To read Csv 
    
    exampleFile = open('sample.csv')
    exampleReader = csv.reader(exampleFile)
    for row in exampleReader:
            print row[0]
    

    【讨论】:

    • 问题是,文件不是 xlsx 它的 xls。我试过 openpyxl 但它不适用于 xls 格式。
    • sitepoint.com/using-python-parse-spreadsheet-data 你可以试试这个 import xlrd workbook = xlrd.open_workbook('my_file_name.xls') worksheet = workbook.sheet_by_name('My_Sheet_Name') sheet.cell(0, 0).value
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    相关资源
    最近更新 更多