Есть ли проще сложить и распечатать их из текста (Python 3.6) - PullRequest
0 голосов
/ 12 июня 2018

Исходя из приведенного ниже текста, я попытался написать программу для подсчета количества дней, которое появляется в этом файле.Например, он будет подсчитывать количество раз, когда появляются суббота (суббота), пятница (пятница) и четверг (четверг).Мне удалось это сделать, но я хотел бы знать, если это более систематический способ сделать это.

Ниже приводится содержание в текстовом файле.

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
Return-Path: <postmaster@collab.sakaiproject.org>
Received: from murder (mail.umich.edu [141.211.14.90])
      by frankenstein.mail.umich.edu (Cyrus v2.3.8) with LMTPA;
     Sat, 05 Jan 2008 09:14:16 -0500
X-Sieve: CMU Sieve 2.3
Received: from murder ([unix socket])
     by mail.umich.edu (Cyrus v2.2.12) with LMTPA;
     Sat, 05 Jan 2008 09:14:16 -0500
Received: from holes.mr.itd.umich.edu (holes.mr.itd.umich.edu 
[141.211.14.79])
     by flawless.mail.umich.edu () with ESMTP id m05EEFR1013674;
     Sat, 5 Jan 2008 09:14:15 -0500
 Received: FROM paploo.uhi.ac.uk (app1.prod.collab.uhi.ac.uk 
[194.35.219.184])
     BY holes.mr.itd.umich.edu ID 477F90B0.2DB2F.12494 ;
     5 Jan 2008 09:14:10 -0500
Received: from paploo.uhi.ac.uk (localhost [127.0.0.1])
     by paploo.uhi.ac.uk (Postfix) with ESMTP id 5F919BC2F2;
     Sat,  5 Jan 2008 14:10:05 +0000 (GMT)

«От» с днем ​​в строках

From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
From louis@media.berkeley.edu Fri Jan  4 18:10:48 2008
From zqian@umich.edu Fri Jan  4 16:10:39 2008
From rjlowe@iupui.edu Fri Jan  4 15:46:24 2008
From zqian@umich.edu Fri Jan  4 15:03:18 2008
From rjlowe@iupui.edu Fri Jan  4 14:50:18 2008
From cwen@iupui.edu Fri Jan  4 11:37:30 2008
From cwen@iupui.edu Fri Jan  4 11:35:08 2008
From gsilver@umich.edu Fri Jan  4 11:12:37 2008
From gsilver@umich.edu Fri Jan  4 11:11:52 2008
From zqian@umich.edu Fri Jan  4 11:11:03 2008
From gsilver@umich.edu Fri Jan  4 11:10:22 2008
From wagnermr@iupui.edu Fri Jan  4 10:38:42 2008
From zqian@umich.edu Fri Jan  4 10:17:43 2008
From antranig@caret.cam.ac.uk Fri Jan  4 10:04:14 2008
From gopal.ramasammycook@gmail.com Fri Jan  4 09:05:31 2008
From david.horwitz@uct.ac.za Fri Jan  4 07:02:32 2008
From david.horwitz@uct.ac.za Fri Jan  4 06:08:27 2008
From david.horwitz@uct.ac.za Fri Jan  4 04:49:08 2008
From david.horwitz@uct.ac.za Fri Jan  4 04:33:44 2008
From stephen.marquard@uct.ac.za Fri Jan  4 04:07:34 2008
From louis@media.berkeley.edu Thu Jan  3 19:51:21 2008
From louis@media.berkeley.edu Thu Jan  3 17:18:23 2008
From ray@media.berkeley.edu Thu Jan  3 17:07:00 2008
From cwen@iupui.edu Thu Jan  3 16:34:40 2008
From cwen@iupui.edu Thu Jan  3 16:29:07 2008
From cwen@iupui.edu Thu Jan  3 16:23:48 2008 

Мой код

fname = input('Enter the file name: ')
word1 = []
try:
    fhand = open('D:/Python/%s' %(fname))
except:
    print('File cannot be opened:' , fname)
    exit()
counts = dict()
for line in fhand:
    words = line.rstrip()
    print(words)
    if(not words.startswith('From:') == True): #Exclude "From:" lines since they don't contain days
        if(words.startswith('From') == True):  #Print lines that contain "From" since they contain days
               s = words
               a = s.split()
               for b in a:
                  counts[b] = counts.get(b,0) + 1
for key in counts:
    if(key == ('Sat') or key== ('Fri') or key == ('Thu')):
         print(key, counts[key])

Результат: Сб 1 Пт 20 Чт 6

1 Ответ

0 голосов
/ 12 июня 2018

Ваш пример ввода включает только Sat?

from collections import Counter
import re

myStr = """From stephen.marquard@uct.ac.za Sat Jan......."""

Counter(re.findall(r'(Sat|Fri|Thu)\b', myStr))
# Counter({'Sat': 5})
...