[英]How to count the string occurrences in python
我有這個文件
10, 44.66.44.55 , AD, AC , 112
10, 44.66.54.55 , AD, AC , 112
10, 44.66.44.55 , AD, AC , 112
50, 44.66.64.55 , AD, AC , 112
10, 44.66.54.55 , AD, AC , 112
10, 44.66.44.55 , AD, AC , 112
我想添加具有相同IP地址的column1。 我希望輸出像
30, 44.66.44.55 , AD, AC , 112
20, 44.66.54.55 , AD, AC , 112
50, 44.66.64.55 , AD, AC , 112
我想在python中做
我試過了
import re
import collections
a = collections.Counter()
with open("temp.txt", "r") as f:
for line in f.readlines():
list = line.split()
a[list[1]] += int(list[0])
print list[1]
您可以使用itertools.groupby解決方案,這在這種情況下是理想的
>>> with open("test.csv") as fin:
grouped_lines = groupby(sorted((e.split(',') for e in fin), key = itemgetter(1)), key = itemgetter(1))
>>> for k, v in grouped_lines:
lines = list(v)
lines[0][0] = sum(int(e[0]) for e in lines)
print lines[0]
[30, ' 44.66.44.55 ', ' AD', ' AC ', ' 112\n']
[20, ' 44.66.54.55 ', ' AD', ' AC ', ' 112\n']
[50, ' 44.66.64.55 ', ' AD', ' AC ', ' 112\n']
你需要拆分,
而不是白色空間
嘗試這個
list = line.split(',')
有一個collections.Counter
模塊。 它返回{'word': numberTimes}
的字典{'word': numberTimes}
http://docs.python.org/2/library/collections.html
雖然@ Abhijit的回答較短,
試試這個,它也有效。
處理完文件數據后,我將數據存儲在字典中。 然后在需要時操縱該數據。
您的數據是dict中的值。
all_ips = {}
f = open('Test2.txt')
lines = f.readlines()
f.close()
for line in lines:
ip = line.split(',')[1]
props = line.split(',')
props[0] = int(props[0])
if ip not in all_ips:
all_ips[ip] = props
else:
all_ips[ip][0] += props[0]
for ip in all_ips:
print all_ips[ip]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.