基于子字符串的字典计数

2024-06-17 10:05:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图打开一个文件,遍历每一行,并对每一行中的特定单词进行计数,以添加到字典中

出于这个问题的考虑,文件中的值如下所示:

From some.email@address.ac.za Sat Jan  5 09:14:16 2008
From some.email@address.ac.za Sat Jan  5 09:14:16 2008
From some.email@address.ac.za Fri Jan  5 09:14:16 2008
From some.email@address.ac.za Wed Jan  5 09:14:16 2008
From some.email@address.ac.za Tue Jan  5 09:14:16 2008
From some.email@address.ac.za Sat Jan  5 09:14:16 2008
From some.email@address.ac.za Sat Jan  5 09:14:16 2008
From some.email@address.ac.za Sat Jan  5 09:14:16 2008

我要做的是读取文件,遍历每一行,记下一周中的天数,并将其返回到字典中。所以结果会是这样的:

{'Sat': 5, 'Fri': 1, 'Wed': 1, 'Tue': 1}

我已经把它读到了文件中,在空白处拆分,然后添加到列表中。在那之后,我陷入了困境,无法深入到每个列表中测试的特定部分

有什么想法吗

fname = input('Enter the file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()

counts = dict()
l1 = []
for line in fhand:
    line = line.split()
    l1.append(line)
for date in l1:
    for day in date:
        if day[2] not in counts:
            counts[day] = 1
        else:
            counts[day] += 1

Tags: 文件infroml1addressemaillinesome
1条回答
网友
1楼 · 发布于 2024-06-17 10:05:26
from collections import defaultdict
fname = input('Enter the file name: ')
try:
    fhand = open(fname)
except:
    print('File cannot be opened:', fname)
    exit()

counts = defaultdict(int)
l1 = []
for line in fhand:
    line = line.split()
    for word in line:
        if word in ['Sun', 'Mon', 'Tue', 'Wed', 'Thrus', 'Fri', 'Sat']:
            counts[word] += 1
print(counts)  

阅读每一行并将其拆分为单词后,您可以检查单词是否为日期名称,如果是,则更新对应于该日期的值

相关问题 更多 >