Strings
We have previously seen strings. Here we will show you quite a few more details.
First, a string is surrounded by single or double quotes:
name = 'Mariano'
food = "homemade lasagna is the best"
Adding strings
You can use several operations with strings. If you add strings, they are concatenated. So this:
result = 'fire' + 'place'
will set result to 'fireplace'.
Adding is particularly useful when you want to accumulate a result. For example:
def collect_vowels(string):
result = ''
for character in string:
if character in 'aeiou':
result += character
return result
print(collect_vowels('crazy time'))
In this code we use the result variable to accumulate all of the vowels in the
string, and we use the += to add in each vowel. This code prints:
aie
Multiplying strings
If you multiply strings, they are duplicated. So this:
result = 'wow' * 3
will set result to 'wowwowwow'.
Here is an illustration of how to use both multiplication and addition of strings. This function wraps text in a banner.
def banner(text):
"""Wrap the text in banner"""
size = len(text)
return '-' * size + '\n' + text + '\n' + '-' * size
result = banner('Go cougars!')
print(result)
Notice how we use '-' * size to get one asterisk for every character in the
input text. Likewise we use + to add the banner, newline, and text.
This code prints three lines of text:
-----------
Go cougars!
-----------
Iterating over the characters in a string
You will recall that we have iterated over numbers:
numbers = [1, 2, 3]
for number in numbers:
print(number)
and the lines in a file:
with open('input.txt') as file:
for line in file:
print(line)
We can likewise iterate over the characters in a string:
line = 'what a life'
for character in line:
print(character)
This will print out each character, including spaces, on a separate line:
w
h
a
t
a
l
i
f
e
Functions for testing strings
Following are some of the functions you can use to test strings:
isalpha(): true if all characters are alphabeticisdigit(): true if all characters are digitsisalnum(): true if all characters are alphanumberic (alphabetic or digits)isspace(): true if all characters are white space (space, tab, newline)
For example:
'a'.isalpha() # True
'ab3'.isalpha() # False
'8'.isdigit() # True
'89a'.isdigit() # False
'89a'.isalnum() # True
' \t\n'.isspace() # True
All of these functions work on variables that reference strings. For example:
password = 'adam123'
if password.alnum():
print('Yes')
else:
print('No')
This will print Yes.
Capitalization
These functions will test or change capitalization:
islower(): returns true if all characters are lowercaseisupper(): returns true if all characters are uppercaseupper(): returns a new string that is all uppercaselower: returns a new string that is all lowercase
For example:
'abc'.islower() # True
'abC'.islower() # False
'ABC'.isupper() # True
'ABc'.isupper() # False
'abc'.upper() # 'ABC'
'ABC'.lower() # 'abc'
Testing for inclusion
We can test if a string is contained within another string:
'BYU' in 'I am a student at BYU.' # True
'BYU' in 'This room is full of monkeys' # False
'll o' in 'This room is full of monkeys' # True
Notice that the last example demonstrates that this is checking only for equality of characters, not words.
Example: collect digits in a string
This function will accumulate all the digits in a string:
# isdigit
string = 'hello8world10\n'
keepers = []
for character in string:
if character.isdigit():
keepers.append(character)
print(keepers)
This will print:
810
Example: replace digits in a string
This function will replace all of the digits in a string with a ?:
def no_numbers(text):
result = ''
for char in text:
if char.isdigit():
result += '?'
else:
result += char
return result
print(no_numbers('There were 7 people in 3 rows.'))
This will print:
There were ? people in ? rows.
Example: collect lowercase or uppercase letters in a string
This example shows how to use in to collect all of the lowercase or uppercase
vowels in some text:
vowels = 'aeiou'
vowels += vowels.upper()
print(vowels)
found = ''
for letter in 'The Aeneid is ancient Greek literature.':
if letter in vowels:
found += letter
print(found)
Notice how we use vowels += vowels.upper() to be sure we have a variable that
has all of the lowercase and uppercase vowels. Then we can check if any letter
is in this string of vowels using letter in vowels.
This code will print:
eAeeiiaieeeieaue
Example: capitalize some letters in a string
Here is another example that will capitalize every letter of a string that is part of BYU:
def byu(text):
"""Capitalize every letter of `text` that is part of 'BYU'"""
result = ''
for c in text:
if c in 'byu':
result += c.upper()
else:
result += c
return result
print(byu('Any student, boy or girl, young or old, can be a yodeler.'))
This will print:
AnY stUdent, BoY or girl, YoUng or old, can Be a Yodeler.