Presentation is loading. Please wait.

Presentation is loading. Please wait.

Reading Files >>> f = file( 'a.txt' ) >>> text = f.read() >>> text 'This is a file.\nLine 2\nLast line!\n' >>> f.close() In Python reading files is no.

Similar presentations


Presentation on theme: "Reading Files >>> f = file( 'a.txt' ) >>> text = f.read() >>> text 'This is a file.\nLine 2\nLast line!\n' >>> f.close() In Python reading files is no."— Presentation transcript:

1 Reading Files >>> f = file( 'a.txt' ) >>> text = f.read() >>> text 'This is a file.\nLine 2\nLast line!\n' >>> f.close() In Python reading files is no problem…

2 Files >>> f = file( 'a.txt' ) >>> text = f.read() >>> text 'This is a file.\nLine 2\nLast line!\n' >>> f.close() In Python reading files is no problem… opens the file and calls it f reads the whole file and calls it text text is a single string containing all the text in the file closes the file (closing Python does the same) But how to process the text from here…?

3 String Manupulation >>> text 'This is a file.\nLine 2\nLast line!\n' >>> print(text) This is a file. Line 2 Last line! >>> text.split() ['This', 'is', 'a', 'file.', 'Line', '2', 'Last', 'line!'] >>> text 'This is a file.\nLine 2\nLast line!\n' >>> lines = text.split('\n') >>> lines ['This is a file.', 'Line 2', 'Last line!', ''] Returns a list of the words in the string (splitting at spaces, tabs and newlines) Returns a list of the lines in the string (splitting at newlines)

4 Objects, objects, everywhere! >>> L = [] # create a list, L >>> dir(L) # see all of L's methods >>> help(L.sort) # I wonder… all list methods appear -- lots of them including append, index, remove, and sort >>> help(L.index) # What does this do?

5 List methodsString methods List methods? Will do! but there's a fundamental difference… what and why? append count extend index insert pop remove reverse sort not including list operators capitalize center count find index isalpha lower replace split strip title upper and ~10 more… >>> dir([]) help can help >>> dir('') not including string operators

6 Mutable vs. immutable objects Unresolved philosophical conundrum: What happens when an immutable object meets a TV remote? 'rock' vs. Lists are mutable objects. Strings are immutable objects. (So are numbers.) >>> L = [2,1,3] >>> L.sort() >>> L [1,2,3] L has changed. >>> s = 'string' >>> s.replace('st','') 'ring' >>> s 'string' returns a NEW string no return value s has NOT changed

7 Lists vs. Dictionaries If I had a dictionary, I guess I could look up what it was! Lists are not perfect… L L[0]L[1] reference 5 42

8 Lists vs. Dictionaries If I had a dictionary, I guess I could look up what it was! Lists are not perfect… You can't choose what to name data. L[0], L[1], … L L[0]L[1] reference 5 42

9 Lists vs. Dictionaries If I had a dictionary, I guess I could look up what it was! Lists are not perfect… L[1988] = 'dragon' You can't choose what to name data. You have to start at 0. L[0], L[1], … L L[0]L[1] reference 5 42 L[1989] = 'snake'

10 Lists vs. Dictionaries If I had a dictionary, I guess I could look up what it was! Lists are not perfect… L[1988] = 'dragon' You can't choose what to name data. You have to start at 0. Some operations can be slow for big lists … L[0], L[1], … L L[0]L[1] reference 5 42 L[1989] = 'snake' if 'dragon' in L:

11 Lists vs. Dictionaries In Python a dictionary is a set of key - value pairs. It's a list where the index can be any immutable-type key. >>> d = {} >>> d[1988] = 'dragon' >>> d[1989] = 'snake' >>> d {1988: 'dragon', 1989: 'snake'} >>> d[1988] 'dragon' >>> d[1987] key error This seems like the key to dictionaries' value…

12 Lists vs. Dictionaries In Python a dictionary is a set of key - value pairs. It's a list where the index can be any immutable-type key. >>> d = {} >>> d[1988] = 'dragon' >>> d[1989] = 'snake' >>> d {1988: 'dragon', 1989: 'snake'} >>> d[1988] 'dragon' >>> d[1987] key error creates an empty dictionary, d This seems like the key to dictionaries' value… 1988 is the key 'dragon' is the value 1989 is the key 'snake' is the value Anyone seen this before? Retrieve data as with lists… or almost !

13 More on dictionaries Dictionaries have lots of built-in methods: >>> d = {1988: 'dragon', 1989: 'snake'} >>> d.keys() [ 1989, 1988 ] >>> d.has_key( 1988 ) True >>> d.has_key( 1969 ) False >>> d.pop( 1988 ) 'dragon' They don't seem moronic to me! delete a key (and its value) check if a key is present get all keys

14 A family dictionary?

15 A family dictionary… T = {'abe' :['homer','herb'], 'jackie':['marge','patty','selma'], 'homer' :['hugo','bart','lisa','maggie'], 'marge' :['hugo','bart','lisa','maggie']} keys can be any immutable type values can be any type at all… T['abe'] How to get 'selma' from T ?

16 A functional family? def favChild( person, Tree ): """ person is a name (a string) Tree is a dictionary of children returns person's favorite child """ if Tree.has_key( person ): Kids = Tree[person] Kids.sort() return Kids[0] else: return 'no children' Who is favored ? Side effects ?

17 A functional family? def addChild( person, Tree, jr ): """ adds person's new child to Tree """ For example, >>> addChild( 'lisa', T, 'abejr' )

18 A challenge… def provinceChallenge( prov ): """ prov is a dictionary of Canada's provinces -- the challenge is to name them all! """ while 0 in prov.values(): guess = input("Name a province: ") if prov.has_key( guess ) == False: print('Try again...’) elif prov[guess] == 0: print('Yes!’) prov[guess] += 1 else: print('Already guessed...’) print('Phew!’) prov = { 'BC': 0, 'AB': 0, … } help?!

19 Change this code so that it tells you how many times you've guessed the same province… def provinceChallenge( prov ): while '0' in prov.values(): guess = input("Guess: ") if prov.has_key( guess ) == False: print('Try again...’) elif prov[guess] == 0: print('Yes!’) prov[guess] += 1 else: print('Already guessed...’) first, for real provinces then, for incorrect guesses…

20 Based on favChild, write favGChild to return the first grandchild alphabetically - or return 'no one' if there are none. def favGChild( person, Tree ): gChildren = [] if Tree.has_key( person ): for child in Tree[person]: if Tree.has_key( child ): gChildren += Tree[child] if gChildren == []: return 'no one' else: gChildren.sort() return gChildren[0] def favChild( person, Tree ): if Tree.has_key( person ): Kids = Tree[person] Kids.sort() return Kids[0] else: return 'no children'


Download ppt "Reading Files >>> f = file( 'a.txt' ) >>> text = f.read() >>> text 'This is a file.\nLine 2\nLast line!\n' >>> f.close() In Python reading files is no."

Similar presentations


Ads by Google