【发布时间】:2014-11-16 11:42:02
【问题描述】:
大家好,我有疑问如何在字典中对相同的 IP 地址求和。 我有输入文件,该文件看起来像:
IP , Byte
10.180.176.61,3669
10.164.134.193,882
10.164.132.209,4168
10.120.81.141,4297
10.180.176.61,100
我的做法是打开该文件并用逗号后的数字解析 IP 地址,这样我就可以对一个 IP 地址的所有字节求和。所以我可以得到如下结果:
IP 10.180.176.61 , 37669
我的代码如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import re,sys, os
from collections import defaultdict
f = open('splited/small_file_1000000.csv','r')
o = open('gotovo1.csv','w')
list_of_dictionaries = {}
for line in f:
if re.search(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}.*',line):
line_ip = re.findall(r'\d{1,3}.\d{1,3}.\d{1,3}.\d{1,3}',line)[0]
line_by = re.findall(r'\,\d+',line)[0]
line_b = re.sub(r'\,','',line_by)
list_of_dictionaries['IP'] = line_ip
list_of_dictionaries['VAL'] = int(line_b)
c = defaultdict(int)
for d in list_of_dictionaries:
c[d['IP']] += d['VAL']
print c
任何想法都会很棒。
【问题讨论】:
标签: python regex parsing csv dictionary