Ciao a tutti.
Apro questo thread per chiedere aiuto a chi ne sa di Python.
Espongo il problema:
Sto studiando Python e sono arrivato al capitolo sui dizionari.
Finito il capitolo uno degli esercizi è il seguente:
Il file di riferimento è il seguente:
http://www.py4inf.com/code/mbox-short.txt
Ho scritto il seguente codice per cominciare a definire il loop che fa il parsing delle righe:
Il mio problema è che il loop non rispetta né il guardian pattern né il la condizione necessaria (inizio linea con 'From'), e continua a ritornare e fare riferimento solo e soltanto alla prima linea.
E lo fa per tutte le linee presenti nel file, che sono una marea.
Riporto la risposta quando eseguo il codice in PyCharm:
Secondo voi quale può essere il problema?
Come posso risolverlo?
Grazie mille in anticipo per l'aiuto.
Apro questo thread per chiedere aiuto a chi ne sa di Python.
Espongo il problema:
Sto studiando Python e sono arrivato al capitolo sui dizionari.
Finito il capitolo uno degli esercizi è il seguente:
Exercise 9.2 Write a program that categorizes each mail message by which day
of the week the commit was done. To do this look for lines that start with “From”,
then look for the third word and keep a running count of each of the days of the
week. At the end of the program print out the contents of your dictionary (order
does not matter).
Sample Line:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
Sample Execution:
python dow.py
Enter a file name: mbox-short.txt
{'Fri': 20, 'Thu': 6, 'Sat': 1}
of the week the commit was done. To do this look for lines that start with “From”,
then look for the third word and keep a running count of each of the days of the
week. At the end of the program print out the contents of your dictionary (order
does not matter).
Sample Line:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
Sample Execution:
python dow.py
Enter a file name: mbox-short.txt
{'Fri': 20, 'Thu': 6, 'Sat': 1}
http://www.py4inf.com/code/mbox-short.txt
Ho scritto il seguente codice per cominciare a definire il loop che fa il parsing delle righe:
Codice:
import string
#inserimento file
f = raw_input('enter file:')
p = open(f)
c = p.read()
#dizionario
d = dict()
for line in c:
line = line.rstrip()
#split corretto
words = c.split()
line = line.translate(None, string.punctuation)
#guardian pattern
if len(words) == 0: continue
if words[0] != 'From': continue
if words[0] == 'From':
print words[2]
for day in c:
d[day] = d.get(day,0) + 1
print d
Il mio problema è che il loop non rispetta né il guardian pattern né il la condizione necessaria (inizio linea con 'From'), e continua a ritornare e fare riferimento solo e soltanto alla prima linea.
E lo fa per tutte le linee presenti nel file, che sono una marea.
Riporto la risposta quando eseguo il codice in PyCharm:
enter file:mbox-short.txt
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Sat
Secondo voi quale può essere il problema?
Come posso risolverlo?
Grazie mille in anticipo per l'aiuto.