我有一个包含大量行的文本文件,每行都有一个日期。 所以我试图获取每个日期的条目并对它们进行计数(或对它们求和)并给出输出"日期有X个条目。" 我是在特定日期做到的。我可以将日期提供给变量"搜索",但我希望每天都能获得它而不需要每天更改它。
注意:日期始终采用格式" dd.mm.yy"。
27.03.18 Entry 1
27.03.18 Entry 2
27.03.18 Entry 3
27.03.18 Entry 4
28.03.18 Entry 1
28.03.18 Entry 2
29.03.18 Entry 1
29.03.18 Entry 2
29.03.18 Entry 3
输出将是:
继承我的代码:
with open('file.txt', 'r', encoding='utf-8') as f:
numLines = 0
for line in f:
search="29.03.18"
if search in line:
numLines += 1
print("search, ": " ,numLines)
答案 0 :(得分:1)
import collections
with open('file.txt', 'r', encoding='utf-8') as f:
cnt = collections.Counter()
for line in f:
cnt[line.split(' ')[0]] += 1
print(cnt)
输出: 反击({'27.03.18':4,'29。03.18':3,'28 .03.18':2})
答案 1 :(得分:0)
您可以使用Counter
来执行此操作,例如:
counts = Counter(datum.split(' ', 2)[0] for datum in data)
data = [x.strip() for x in """
27.03.18 Entry 1
27.03.18 Entry 2
27.03.18 Entry 3
27.03.18 Entry 4
28.03.18 Entry 1
28.03.18 Entry 2
29.03.18 Entry 1
29.03.18 Entry 2
29.03.18 Entry 3
""".split('\n')[1:-1]]
from collections import Counter
counts = Counter(datum.split(' ', 2)[0] for datum in data)
print(counts)
Counter({u'27.03.18': 4, u'29.03.18': 3, u'28.03.18': 2})
答案 2 :(得分:0)
只需使用行的前8个字符(日期)作为存储在字典中的键,并在遇到相同日期时递增。
with open('file.txt', 'r', encoding='utf-8') as f:
counts = {}
for line in f:
# the setdefault will initialize the key; you could also use defaultdict to make it even nicer
counts[line[:8]] = counts.setdefault(line[:8], 0) + 1
print(counts)
答案 3 :(得分:0)
您也可以使用pandas
import pandas as pd
data = pd.read_csv('file.txt', sep=" ", header=None)
data.columns = ["date", "entry", "count"]
print(data.groupby(['date']).agg('count')[['count']])