[Tutor] String Attribute
Emile van Sebille
emile at fenx.com
Sun Aug 2 02:45:48 CEST 2015
On 8/1/2015 4:07 PM, Ltc Hotspot wrote:
> Hi Alan,
>
> Question1: The output result is an address or line?
It's a set actually. Ready to be further processed I imagine. Or to
print out line by line if desired.
> Question2: Why are there 54 lines as compared to 27 line in the desired
> output?
Because there are 54 lines that start with 'From'.
As I noted in looking at your source data, for each email there's a
'From ' and a 'From:' -- you'd get the right answer checking only for
startswith('From ')
Emile
>
> Here is the latest revised code:
> fname = raw_input("Enter file name: ")
> if len(fname) < 1 : fname = "mbox-short.txt"
> fh = open(fname)
> count = 0
> addresses = set()
> for line in fh:
> if line.startswith('From'):
> line2 = line.strip()
> line3 = line2.split()
> line4 = line3[1]
> addresses.add(line4)
> count = count + 1
> print addresses
> print "There were", count, "lines in the file with From as the first word"
>
> The output result:
> set(['stephen.marquard at uct.ac.za', 'louis at media.berkeley.edu', '
> zqian at umich.edu', 'rjlowe at iupui.edu', 'cwen at iupui.edu', 'gsilver at umich.edu',
> 'wagnermr at iupui.edu', 'antranig at caret.cam.ac.uk','
> gopal.ramasammycook at gmail.com', 'david.horwitz at uct.ac.za', '
> ray at media.berkeley.edu']) ← Mismatch
> There were 54 lines in the file with From as the first word
>
>
> The desired output result:
> stephen.marquard at uct.ac.za
> louis at media.berkeley.edu
> zqian at umich.edu
> rjlowe at iupui.edu
> zqian at umich.edu
> rjlowe at iupui.edu
> cwen at iupui.edu
> cwen at iupui.edu
> gsilver at umich.edu
> gsilver at umich.edu
> zqian at umich.edu
> gsilver at umich.edu
> wagnermr at iupui.edu
> zqian at umich.edu
> antranig at caret.cam.ac.uk
> gopal.ramasammycook at gmail.com
> david.horwitz at uct.ac.za
> david.horwitz at uct.ac.za
> david.horwitz at uct.ac.za
> david.horwitz at uct.ac.za
> stephen.marquard at uct.ac.za
> louis at media.berkeley.edu
> louis at media.berkeley.edu
> ray at media.berkeley.edu
> cwen at iupui.edu
> cwen at iupui.edu
> cwen at iupui.edu
> There were 27 lines in the file with From as the first word
>
> Regards,
> Hal
>
>
>
>
>
>
>
>
>
> On Sat, Aug 1, 2015 at 1:40 PM, Alan Gauld <alan.gauld at btinternet.com>
> wrote:
>
>> On 01/08/15 19:48, Ltc Hotspot wrote:
>>
>>> There is an indent message in the revised code.
>>> Question: Where should I indent the code line for the loop?
>>>
>>
>> Do you understand the role of indentation in Python?
>> Everything in the indented block is part of the structure,
>> so you need to indent everything that should be executed
>> as part of the logical block.
>>
>> fname = raw_input("Enter file name: ")
>>> if len(fname) < 1 : fname = "mbox-short.txt"
>>> fh = open(fname)
>>> count = 0
>>> addresses = set()
>>> for line in fh:
>>> if line.startswith('From'):
>>> line2 = line.strip()
>>> line3 = line2.split()
>>> line4 = line3[1]
>>> addresses.add(line)
>>> count = count + 1
>>>
>>
>> Everything after the if line should be indented an extra level
>> because you only want to do those things if the line
>> startswith From.
>>
>> And note that, as I suspected, you are adding the whole line
>> to the set when you should only be adding the address.
>> (ie line4). This would be more obvious if you had
>> used meaningful variable names such as:
>>
>> strippedLine = line.strip()
>> tokens = strippedLine.split()
>> addr = tokens[1]
>> addresses.add(addr)
>>
>> PS.
>> Could you please delete the extra lines from your messages.
>> Some people pay by the byte and don't want to receive kilobytes
>> of stuff they have already seen multiple times.
>>
>>
>> --
>> Alan G
>> Author of the Learn to Program web site
>> http://www.alan-g.me.uk/
>> http://www.amazon.com/author/alan_gauld
>> Follow my photo-blog on Flickr at:
>> http://www.flickr.com/photos/alangauldphotos
>>
>>
> _______________________________________________
> Tutor maillist - Tutor at python.org
> To unsubscribe or change subscription options:
> https://mail.python.org/mailman/listinfo/tutor
>
More information about the Tutor
mailing list