Strings in Python Computer Science 18 Feb 2011 Introduction Prior experience Defining string variables Getting user input Printing strings Lesson Objectives Understand string structure Access characters and sub-sections from a string Concatenate strings Traverse a string Strings so far Strings are generally used to store text data sample="LEVEL" Name=input ("What is your name?") Can also store non-natural language data e.g. telephone numbers my_tel="+1 (301) 294 4444" Q: What data should/should not be stored in strings? Strings vs. Integers Both strings and integer variables can store numbers my_speed_str="300" my_speed_integer=300 Q: What is the difference between strings and integers? Strings in use Q: Where are strings displayed and entered? String composition Strings are a composite data type Built from another data type, characters In a string, characters are stored in sequence. Strings can be any length (including empty). String are enclosed in quotation marks. str_var = "300 m/s" empty_str="" Length of a string Use len(str) to return string length (# of characters) sample="SERIES" len(sample)= 6 empty_str="" len(empty_str) = 0 String representation In strings, characters are accessed by index …like mailboxes in an apartment building. First index is 0, not 1. s="LEVEL" startChar=s[ 0 ] just_v=ss[ 2 ] Python strings are immutable (can’t change individual chars) s[0]="B" Try it out Slices (sections of a string) Use a range to specify a slice (sub-string) from start index up to but not including the last index speed_display = "300 m/s“ zeroZero = speed_display[ 1 : 3 ] Omit the first value to select the start of a string just_num= speed_display[: 3 ] Omit the second value to select the end of a string just_unit = speed_display[ 4:] Try it out Operations: Concatenation Combine strings using + (concatenation operator) full_name = "Henry" + " " + "James" print ":" + full_name + ":" Concatenation is not addition vision_str="20"+"20" =“2020” vision_val=20+20 =40 Try it out: Build a string build="" while len(build)<5: build = build +"a" print build String comparison To test for equality, use the == operator To compare order, use the < and > operators user_name=raw_input("Enter your name- ") if user_name==“Sam": print "Welcome back Sam“ elif user_name<"Sam": print "Your name is before Sam“ else: print "Your name is after Sam“ These operators are case sensitive. Upper case characters are ‘less than’ lower case Operations: Traversing through a string Use a loop to examine each character in a string See HTTLCS for an alternative format: for in strng="count # of us" index=0 count=0 while index < len(strng): if strng[index] == "u“ or strng[index] == “U": count+=1 index+=1 Try it out How would we traverse backwards? Summary Strings are composed of characters String length sample[i] Character at index i sample[start:end] Slice from start up to but not including end index sample+sample Concatenate strings sample=="test" Test for equality sample<test Test for order len(sample) Advanced Strings String operations: find find() searches for a string within a string To use it, insert this at the top of your code: import string find() returns the first index of a substring full_name = "Henry James" string.find(full_name,"e") You can specify the starting point of the search: string.find(full_name,"e",2) If the string is not found, find() returns -1 find() is case sensitive