python:读取文件并匹配另一个文件中的字符串并拉出行

时间:2017-06-02 06:15:47

标签: python string match

数据 masterfile:

192.168.42.2
192.68.42.12

搜索文件:

  1 17.248.154.203                           =>     7.88Kb     28.6Kb     28.6Kb     28.6KB
     192.168.42.12                            <=       208b      151Kb      151Kb      151KB
   2 a23-58-18-217.deploy.static.akamaitechn  =>     6.61Kb     8.60Kb     8.60Kb     8.60KB
     192.168.42.12                            <=     15.0Kb     4.95Kb     4.95Kb     4.95KB
   3 a23-207-129-216.deploy.static.akamaitec  =>         0b     8.09Kb     8.09Kb     8.09KB
     192.168.42.12                            <=         0b     3.25Kb     3.25Kb     3.25KB
   4 17.252.172.5                             =>         0b     4.92Kb     4.92Kb     4.92KB
     192.168.42.2                             <=         0b     3.73Kb     3.73Kb     3.73KB
     192.168.42.2                             <=         0b     3.73Kb     3.73Kb     3.73KB

所需的输出:

192.168.42.12 3.25(例子)

192.168.42.2 3.73

[Link] https://pastebin.com/Ms4TyLMW - 我已根据您的建议更改了我的代码

这就是我得到的!

&#39; 192.168.42.12 151

192.168.42.12 4.95

192.168.42.12 3.25

192.168.42.2 3.73

192.168.42.2 3.73

192.168.42.12 5.36

192.168.42.12 705&#39;

@saul

我怎样才能避免打印这多个相同的数据。我试图在这样的单行打印相同的IP和相应的用法?

&#39; 192.168.42.12 2043(总使用量192.168.42.12)

192.168.42.2 123(总使用量为192.168.42.2)&#39;

2 个答案:

答案 0 :(得分:0)

我在文本文件中有两个IP地址。首先,我需要读取IP地址,然后检查另一个使用IP地址的文件(请参阅上面的问题)。

现在我需要从另一个文件中提取相应的IP和用法。 此代码定位IP和使用的特定位置。 问题是,当我尝试迭代iplist时,它总是需要输入第一个数据,无论文件中是哪个。提前谢谢。

<强>代码:

    for line in data_consumed:
        for element in iplist:
            if element in line:
                result = line
                ip = line[5:-50]
                result_ip = ip.replace(" ","")
                usage = line[-8:]
                d = usage.replace('KB', '')
                usage = d.replace('B','')
                usage = usage.replace('\n','')
                final_usage += float(usage)
                try:
                    final_usage += float(usage)
                except ValueError:
                    pass
                megabyte = float(0.000976562)
                result_usage = megabyte * final_usage
        print result_ip + '\t\t\t' + str(result_usage)

期望的输出:

192.168.42.12  usage(total value)

192.168.42.2  usage(totalvalue)

答案 1 :(得分:0)

你可以这样做:

strStr = ["192.168.42.2", "192.168.42.12"]

# the "e:\temp\111.txt" is the searching file storage path.
with open(r"e:\temp\111.txt") as f:
    lines = f.readlines()
    for ii in strStr:
        sumResult = 0
        for line in lines:
            if ii in line:
                sumResult += float(line.strip(" ").split(" ")[-1].split("KB")[0])
        print(ii, sumResult)

代码结果是:

192.168.42.2 7.46
192.168.42.12 159.2

有一些问题,因为你没有指出匹配条件,只是从行数据中分割出最后一个值。