Main.StringExamples History
Hide minor edits - Show changes to markup
- here's a version that searches in strng[start:end]
- we use default arguments to
- here's a version that searches in s[start:end]
- we use default arguments to provide start and end
- as optional parameters
if end==None :
if end is None :
print s[i]
print fruit[i]
- these are called slices
def extract_every_2nd(s) :
result = '' # the empty string
for i in range(0, len(s), 2) :
result += s[i]
return result
(:source lang=python:)
"""Strings. Material from Chapter 7 http://openbookproject.net/thinkcs/python/english2e/ch07.html """
- The bracket operator selects a single character from a string:
fruit = "banana" letter = fruit[1] print letter
- The expression fruit[1] selects the character with index 1 from fruit.
- When we display letter, we get a surprise:
- a
- The letter with index 1 is not the first letter!
- Computer scientists always start counting from zero.
- A nice explanation is given at:
- http://www.cs.utexas.edu/~EWD/ewd08xx/EWD831.PDF
- (the writer is Edsger W. Dijkstra, one of the founding fathers
- of computer science)
- The len function returns the number of characters in a string:
fruit = "banana" print len(fruit)
- Traversing the letters of a string can be done in two ways:
fruit = "banana" for i in range(len(fruit)) :
print s[i]
- or
fruit = "banana" for character in fruit :
print character
- we can extract a substring of a string using the bracket operator:
s = "python java perl" print s[0:6] print s[7:11] print s[12:len(s)]
- some shortcuts:
print s[:6] # print a prefix of the string print [12:] # print a suffix of the string
- what do you think s[:] would give?
print s[:]
- It is tempting to use the bracket operator in order to modify
- a string.
greeting = "Hello, world!" greeting[0] = 'J' # ERROR!
- strings are immutable, i.e. cannot be changed once created.
- you will have to create a new string with the desired modification:
greeting = "Hello, world!" new_greeting = 'J' + greeting[1:] print new_greeting
- The in operator
- The in operator tests if one string is a substring of another:
'p' in 'apple' 'i' in 'apple' 'ap' in 'apple'
- Note that a string is a substring of itself:
'apple' in 'apple'
def remove_vowels(s):
vowels = "aeiouAEIOU"
s_without_vowels = ""
for letter in s:
if letter not in vowels:
s_without_vowels += letter
return s_without_vowels
- the in operator only determines if a string is a substring of
- another one. here's a function that also provides the index
- of the first occurrence:
- (the book gives a version with a while loop)
def find(s, substr) :
for index in range(len(s)) :
if s[index] == ch:
return index
return -1
- here's a version that searches in strng[start:end]
- we use default arguments to
def find(s, substr, start=0, end=None) :
if end==None :
end = len(s)
for index in range(start, end) :
if s[index] == ch:
return index
return -1
- Exercise: write a function that behaves like the
- range function, except that instead of returning a
- list it prints the numbers in the range.
- the string module contains useful functions for manipulating strings.
- among other things, it includes our find function!
import string help(string.find) print string.find.__doc__
- let's write a function that determines if a character is lower case.
- here are three ways of doing so:
def is_lower(ch):
return string.find(string.lowercase, ch) != -1
- notice the use of string.lowercase
- using the in operator:
def is_lower(ch):
return ch in string.lowercase
- using the comparison operator:
def is_lower(ch):
return 'a' <= ch <= 'z'
- Another constant defined in the string module may surprise you when you print it:
print string.whitespace
- Whitespace characters move the cursor without printing anything.
(:sourceend:)
