以下是文件的内容,我的问题是如何计算不同ID的单词“optimus”的出现次数
ID67 DATEUID Thank you for choosing Optimus prime. Please wait for an Optimus prime to respond. You are currently number 0 in the queue. You should be connected to an agent in approximately TIMEUID.. You are now chatting with AGENTUID 0
ID67 Optimus MEMORYUID Hi there! Welcome to Optimus prime Web Chat. How can I help you today? 1
ID67 Optimus DATEUID I like to pay prepaid from CURRENCYUID with NUMBERUID expiry on whateve date. my phone no is PHONEUID 2
ID12120 0 0 0 is the number. They are open 0/0 so you can ring them anytime. SMILEUID 1
ID12120 Thanks Optimus, I will give them a call. Thanks for your help! HELPUID 2
ID5552 is the number. They are open 0/0 so you can ring them anytime. SMILEUID 1
ID5552 Thanks Optimus, I will give them a call. Thanks for your help! HELPUID 2
for line in chat.txt:
print line, ####print lines and count optimus word for the particular id..
输出应该像
ID67:4
ID12120
ID5552:1
答案 0 :(得分:1)
一种方法是使用defaultdict
作为计数:
from collections import defaultdict
d = defaultdict(int)
with open("chat.txt") as f:
for line in f:
id, data = line.split(None, 1)
d[id] += data.lower().count("optimus")
答案 1 :(得分:1)
>>> from collections import Counter
>>> c = Counter()
>>> for line in chat.txt:
... c[line.strip().split(" ",1)[0]] += line.count("Optimus")
>>> c
Counter({'ID67': 5, 'ID5552': 1, 'ID12120': 1, '': 0})
您可以将值打印为:
>>> for k, v in c.items():
... print("{}:{}".format(k, v))
...
:0
ID67:5
ID5552:1
ID12120:1