Strings
Strings
Text is a string data type. Any data type written as text is a string. Any data under single, double or triple quote are strings. There are different string methods and built-in functions to deal with string data types. To check the length of a string use the len() method.
Creating a String
letter = 'P' # A string could be a single character or a bunch of texts
print(letter) # P
print(len(letter)) # 1
greeting = 'Hello, World!' # String could be made using a single or double quote,"Hello, World!"
print(greeting) # Hello, World!
print(len(greeting)) # 13
sentence = "I hope you are enjoying learning Python"
print(sentence)
Multiline string is created by using triple single quotes (''') or triple double quotes ("""). See the example below.
multiline_string = '''I am a teacher and enjoy teaching.
I didn't find anything as rewarding as empowering people.
That is why I started teaching python.'''
print(multiline_string)
# Another way of doing the same thing
multiline_string = """I am a teacher and enjoy teaching.
I didn't find anything as rewarding as empowering people.
That is why I started teaching python."""
print(multiline_string)
String Concatenation
We can connect strings together. Merging or connecting strings is called concatenation. See the example below:
first_name = 'Saroj'
last_name = 'Mahat'
space = ' '
full_name = first_name + space + last_name
print(full_name) # Saroj Mahat
# Checking the length of a string using len() built-in function
print(len(first_name)) # 5
print(len(last_name)) # 5
print(len(first_name) > len(last_name)) # False
print(len(full_name)) # 11
Escape Sequences in Strings
In Python and other programming languages \ followed by a character is an escape sequence. Let us see the most common escape characters:
- \n: new line
- \t: Tab means(8 spaces)
- \\: Back slash
- \': Single quote (')
- \": Double quote (")
Now, let us see the use of the above escape sequences with examples.
print('I hope everyone is enjoying learning Python.\nAre you ?') # line break
print('day\tTopics\tExercises') # adding tab space or 4 spaces
print('Day 1\t5\t5')
print('Day 2\t6\t20')
print('Day 3\t5\t23')
print('Day 4\t1\t35')
print('This is a backslash symbol (\\)') # To write a backslash
print('In every programming language it starts with \"Hello, World!\"') # to write a double quote inside a single quote
String formatting
Old Style String Formatting (% Operator)
In Python there are many ways of formatting strings. In this section, we will cover some of them. The "%" operator is used to format a set of variables enclosed in a "tuple" (a fixed size list), together with a format string, which contains normal text together with "argument specifiers", special symbols like "%s", "%d", "%f", "%.number of digitsf".
- %s - String (or any object with a string representation, like numbers)
- %d - Integers
- %f - Floating point numbers
- "%.number of digitsf" - Floating point numbers with fixed precision
# Strings only
first_name = 'Saroj'
last_name = 'Mahat'
language = 'Python'
formated_string = 'I am %s %s. I teach %s' %(first_name, last_name, language)
print(formated_string)
# Strings and numbers
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of circle with a radius %d is %.2f.' %(radius, area) # 2 refers the 2 significant digits after the point
python_libraries = ['Django', 'Flask', 'NumPy', 'Matplotlib','Pandas']
formated_string = 'The following are python libraries:%s' % (python_libraries)
print(formated_string) # "The following are python libraries:['Django', 'Flask', 'NumPy', 'Matplotlib','Pandas']"
New Style String Formatting (str.format)
This formatting is introduced in Python version 3.
first_name = 'Saroj'
last_name = 'Mahat'
language = 'Python'
formated_string = 'I am {} {}. I teach {}'.format(first_name, last_name, language)
print(formated_string)
a = 4
b = 3
print('{} + {} = {}'.format(a, b, a + b))
print('{} - {} = {}'.format(a, b, a - b))
print('{} * {} = {}'.format(a, b, a * b))
print('{} / {} = {:.2f}'.format(a, b, a / b)) # limits it to two digits after decimal
print('{} % {} = {}'.format(a, b, a % b))
print('{} // {} = {}'.format(a, b, a // b))
print('{} ** {} = {}'.format(a, b, a ** b))
# Strings and numbers
radius = 10
pi = 3.14
area = pi * radius ** 2
formated_string = 'The area of a circle with a radius {} is {:.2f}.'.format(radius, area) # 2 digits after decimal
print(formated_string)
String Interpolation / f-Strings (Python 3.6+)
Another new string formatting is string interpolation, f-strings. Strings start with f and we can inject the data in their corresponding positions.
a = 4
b = 3
print(f'{a} + {b} = {a +b}')
print(f'{a} - {b} = {a - b}')
print(f'{a} * {b} = {a * b}')
print(f'{a} / {b} = {a / b:.2f}')
print(f'{a} % {b} = {a % b}')
print(f'{a} // {b} = {a // b}')
print(f'{a} ** {b} = {a ** b}')
Python Strings as Sequences of Characters
Python strings are sequences of characters, and share their basic methods of access with other Python ordered sequences of objects – lists and tuples. The simplest way of extracting single characters from strings (and individual members from any sequence) is to unpack them into corresponding variables.
Unpacking Characters
language = 'Python'****
a,b,c,d,e,f = language # unpacking sequence characters into variables
print(a) # P
print(b) # y
print(c) # t
print(d) # h
print(e) # o
print(f) # n
Accessing Characters in Strings by Index
In programming, counting starts from zero. Therefore, the first letter of a string is at zero index and the last letter of a string is the length of a string minus one.

language = 'Python'
first_letter = language[0]
print(first_letter) # P
second_letter = language[1]
print(second_letter) # y
last_index = len(language) - 1
last_letter = language[last_index]
print(last_letter) # n
If we want to start from right end we can use negative indexing. -1 is the last index.
language = 'Python'
last_letter = language[-1]
print(last_letter) # n
second_last = language[-2]
print(second_last) # o
Slicing Python Strings
In python we can slice strings into substrings.
language = 'Python'
first_three = language[0:3] # starts at zero index and up to 3 but not include 3
print(first_three) #Pyt
last_three = language[3:6]
print(last_three) # hon
# Another way
last_three = language[-3:]
print(last_three) # hon
last_three = language[3:]
print(last_three) # hon
Reversing a String
We can easily reverse strings in python.
greeting = 'Hello, World!'
print(greeting[::-1]) # !dlroW ,olleH
Skipping Characters While Slicing
It is possible to skip characters while slicing by passing step argument to slice method.
language = 'Python'
pto = language[0:6:2] #
print(pto) # Pto
String Methods
There are many string methods which allow us to format strings. Lets see some of the string methods in the following example:
- capitalize(): Converts the first character of the string to capital letter
challenge = 'learning python'
print(challenge.capitalize()) # 'Learning python'
- count(): returns occurrences of substring in string, count(substring, start=.., end=..). The start is a starting indexing for counting and end is the last index to count.
challenge = 'learning python'
print(challenge.count('y')) # 1
print(challenge.count('y', 7, 14)) # 1,
print(challenge.count('th')) # 2
- endswith(): Checks if a string ends with a specified ending
challenge = 'learning python'
print(challenge.endswith('on')) # True
print(challenge.endswith('tion')) # False
- expandtabs(): Replaces tab character with spaces, default tab size is 8. It takes tab size argument
challenge = 'fourth\tday\tof\tpython'
print(challenge.expandtabs()) # 'fourth day of python'
print(challenge.expandtabs(10)) # 'fourth day of python'
- find(): Returns the index of the first occurrence of a substring, if not found returns -1
challenge = 'learning python'
print(challenge.find('y')) # 10
print(challenge.find('th')) # 11
- rfind(): Returns the index of the last occurrence of a substring, if not found returns -1
challenge = 'yes we are learning python'
print(challenge.rfind('y')) # 21
print(challenge.rfind('th')) # 22
- format(): formats string into a nicer output
More about string formatting check this link
first_name = 'Saroj'
last_name = 'Mahat'
age = 250
job = 'teacher'
country = 'Nepal'
sentence = 'I am {} {}. I am a {}. I am {} years old. I live in {}.'.format(first_name, last_name, age, job, country)
print(sentence) # I am Saroj Mahat. I am 250 years old. I am a teacher. I live in Nepal.
radius = 10
pi = 3.14
area = pi * radius ** 2
result = 'The area of a circle with radius {} is {}'.format(str(radius), str(area))
print(result) # The area of a circle with radius 10 is 314
- index(): Returns the lowest index of a substring, additional arguments indicate starting and ending index (default 0 and string length - 1). If the substring is not found it raises a valueError.
challenge = 'learning python'
sub_string = 'ar'
print(challenge.index(sub_string)) # 2
print(challenge.index(sub_string, 9)) # error
- rindex(): Returns the highest index of a substring, additional arguments indicate starting and ending index (default 0 and string length - 1)
challenge = 'learning python'
sub_string = 'n'
print(challenge.rindex(sub_string)) # 14
print(challenge.rindex(sub_string, 15)) # error
print(challenge.rindex('on', 8)) # 13
- isalnum(): Checks alphanumeric character
challenge = 'fourthdayPython'
print(challenge.isalnum()) # True
challenge = '4thdayPython'
print(challenge.isalnum()) # True
challenge = 'learning python'
print(challenge.isalnum()) # False, space is not an alphanumeric character
challenge = 'learning python 2082'
print(challenge.isalnum()) # False
- isalpha(): Checks if all string elements are alphabet characters (a-z and A-Z)
challenge = 'learning python'
print(challenge.isalpha()) # False, space is once again excluded
challenge = 'fourthdayPython'
print(challenge.isalpha()) # True
num = '123'
print(num.isalpha()) # False
- isdecimal(): Checks if all characters in a string are decimal (0-9)
challenge = 'learning python'
print(challenge.isdecimal()) # False
challenge = '123'
print(challenge.isdecimal()) # True
challenge = '\u00B2'
print(challenge.isdigit()) # False
challenge = '12 3'
print(challenge.isdecimal()) # False, space not allowed
- isdigit(): Checks if all characters in a string are numbers (0-9 and some other unicode characters for numbers)
challenge = 'fourth'
print(challenge.isdigit()) # False
challenge = '30'
print(challenge.isdigit()) # True
challenge = '\u00B2'
print(challenge.isdigit()) # True
- isnumeric(): Checks if all characters in a string are numbers or number related (just like isdigit(), just accepts more symbols, like ½)
num = '10'
print(num.isnumeric()) # True
num = '\u00BD' # ½
print(num.isnumeric()) # True
num = '10.5'
print(num.isnumeric()) # False
- isidentifier(): Checks for a valid identifier - it checks if a string is a valid variable name
challenge = '4thdayOfPython'
print(challenge.isidentifier()) # False, because it starts with a number
challenge = 'fourth_day_of_python'
print(challenge.isidentifier()) # True
- islower(): Checks if all alphabet characters in the string are lowercase
challenge = 'learning python'
print(challenge.islower()) # True
challenge = 'Learning Python'
print(challenge.islower()) # False
- isupper(): Checks if all alphabet characters in the string are uppercase
challenge = 'learning python'
print(challenge.isupper()) # False
challenge = 'learning PYTHON'
print(challenge.isupper()) # True
- join(): Returns a concatenated string
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = ' '.join(web_tech)
print(result) # 'HTML CSS JavaScript React'
web_tech = ['HTML', 'CSS', 'JavaScript', 'React']
result = '# '.join(web_tech)
print(result) # 'HTML# CSS# JavaScript# React'
- strip(): Removes all given characters starting from the beginning and end of the string
challenge = 'learning pythoonnn'
print(challenge.strip('noth')) # 'learning py'
- replace(): Replaces substring with a given string
challenge = 'learning python'
print(challenge.replace('python', 'coding')) # 'learning coding'
- split(): Splits the string, using given string or space as a separator
challenge = 'learning python'
print(challenge.split()) # ['learning', 'python']
challenge = 'fourth, day, of, python'
print(challenge.split(', ')) # ['fourth', 'day', 'of', 'python']
- title(): Returns a title cased string
challenge = 'learning python'
print(challenge.title()) # Learning Python
- swapcase(): Converts all uppercase characters to lowercase and all lowercase characters to uppercase characters
challenge = 'learning python'
print(challenge.swapcase()) # LEARNING PYTHON
challenge = 'learning Python'
print(challenge.swapcase()) # LEARNING pYTHON
- startswith(): Checks if String Starts with the Specified String
challenge = 'fourth day of learning python'
print(challenge.startswith('fourth')) # True
challenge = '4th day of python'
print(challenge.startswith('fourth')) # False
🌕 Now do some exercises for your brain and muscles.
💻 Exercises - Day 4
- Concatenate the string 'fourth', 'day', 'of', 'Python' to a single string, 'fourth day of learning Python'.
- Concatenate the string 'Coding', 'For' , 'All' to a single string, 'Coding For All'.
- Declare a variable named company and assign it to an initial value "Coding For All".
- Print the variable company using print().
- Print the length of the company string using len() method and print().
- Change all the characters to uppercase letters using upper() method.
- Change all the characters to lowercase letters using lower() method.
- Use capitalize(), title(), swapcase() methods to format the value of the string Coding For All.
- Cut(slice) out the first word of Coding For All string.
- Check if Coding For All string contains a word Coding using the method index, find or other methods.
- Replace the word coding in the string 'Coding For All' to Python.
- Change Python for Everyone to Python for All using the replace method or other methods.
- Split the string 'Coding For All' using space as the separator (split()) .
- "Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon" split the string at the comma.
- What is the character at index 0 in the string Coding For All.
- What is the last index of the string Coding For All.
- What character is at index 10 in "Coding For All" string.
- Create an acronym or an abbreviation for the name 'Python For Everyone'.
- Create an acronym or an abbreviation for the name 'Coding For All'.
- Use index to determine the position of the first occurrence of C in Coding For All.
- Use index to determine the position of the first occurrence of F in Coding For All.
- Use rfind to determine the position of the last occurrence of l in Coding For All People.
- Use index or find to find the position of the first occurrence of the word 'because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
- Use rindex to find the position of the last occurrence of the word because in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
- Slice out the phrase 'because because because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
- Find the position of the first occurrence of the word 'because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
- Slice out the phrase 'because because because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
- Does '\'Coding For All' start with a substring Coding?
- Does 'Coding For All' end with a substring coding?
- ' Coding For All ' , remove the left and right trailing spaces in the given string.
- Which one of the following variables return True when we use the method isidentifier():
- 4thdayOfPython
- fourth_day_of_python
- The following list contains the names of some of python libraries: ['Django', 'Flask', 'Bottle', 'Pyramid', 'Falcon']. Join the list with a hash with space string.
- Use the new line escape sequence to separate the following sentences.
py I am enjoying this challenge. I just wonder what is next. - Use a tab escape sequence to write the following lines.
py Name Age Country City Saroj 250 Nepal Lalitpur - Use the string formatting method to display the following:
radius = 10
area = 3.14 * radius ** 2
The area of a circle with radius 10 is 314 meters square.
- Make the following using string formatting methods:
8 + 6 = 14
8 - 6 = 2
8 * 6 = 48
8 / 6 = 1.33
8 % 6 = 2
8 // 6 = 1
8 ** 6 = 262144