Back to Home

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:

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".

# 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.

String index

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:

challenge = 'learning python'
print(challenge.capitalize()) # 'Learning python'
challenge = 'learning python'
print(challenge.count('y')) # 1
print(challenge.count('y', 7, 14)) # 1, 
print(challenge.count('th')) # 2
challenge = 'learning python'
print(challenge.endswith('on'))   # True
print(challenge.endswith('tion')) # False
challenge = 'fourth\tday\tof\tpython'
print(challenge.expandtabs())   # 'fourth  day    of      python'
print(challenge.expandtabs(10)) # 'fourth    day      of        python'
challenge = 'learning python'
print(challenge.find('y'))  # 10
print(challenge.find('th')) # 11
challenge = 'yes we are learning python'
print(challenge.rfind('y'))  # 21
print(challenge.rfind('th')) # 22
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
challenge = 'learning python'
sub_string = 'ar'
print(challenge.index(sub_string))  # 2
print(challenge.index(sub_string, 9)) # error
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
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
challenge = 'learning python'
print(challenge.isalpha()) # False, space is once again excluded
challenge = 'fourthdayPython'
print(challenge.isalpha()) # True
num = '123'
print(num.isalpha())      # False
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
challenge = 'fourth'
print(challenge.isdigit()) # False
challenge = '30'
print(challenge.isdigit())   # True
challenge = '\u00B2'
print(challenge.isdigit())   # True
num = '10'
print(num.isnumeric()) # True
num = '\u00BD' # ½
print(num.isnumeric()) # True
num = '10.5'
print(num.isnumeric()) # False
challenge = '4thdayOfPython'
print(challenge.isidentifier()) # False, because it starts with a number
challenge = 'fourth_day_of_python'
print(challenge.isidentifier()) # True
challenge = 'learning python'
print(challenge.islower()) # True
challenge = 'Learning Python'
print(challenge.islower()) # False
challenge = 'learning python'
print(challenge.isupper()) #  False
challenge = 'learning PYTHON'
print(challenge.isupper()) # True
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'
challenge = 'learning pythoonnn'
print(challenge.strip('noth')) # 'learning py'
challenge = 'learning python'
print(challenge.replace('python', 'coding')) # 'learning coding'
challenge = 'learning python'
print(challenge.split()) # ['learning', 'python']
challenge = 'fourth, day, of, python'
print(challenge.split(', ')) # ['fourth', 'day', 'of', 'python']
challenge = 'learning python'
print(challenge.title()) # Learning Python
challenge = 'learning python'
print(challenge.swapcase())   # LEARNING PYTHON
challenge = 'learning Python'
print(challenge.swapcase())  # LEARNING pYTHON
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

  1. Concatenate the string 'fourth', 'day', 'of', 'Python' to a single string, 'fourth day of learning Python'.
  2. Concatenate the string 'Coding', 'For' , 'All' to a single string, 'Coding For All'.
  3. Declare a variable named company and assign it to an initial value "Coding For All".
  4. Print the variable company using print().
  5. Print the length of the company string using len() method and print().
  6. Change all the characters to uppercase letters using upper() method.
  7. Change all the characters to lowercase letters using lower() method.
  8. Use capitalize(), title(), swapcase() methods to format the value of the string Coding For All.
  9. Cut(slice) out the first word of Coding For All string.
  10. Check if Coding For All string contains a word Coding using the method index, find or other methods.
  11. Replace the word coding in the string 'Coding For All' to Python.
  12. Change Python for Everyone to Python for All using the replace method or other methods.
  13. Split the string 'Coding For All' using space as the separator (split()) .
  14. "Facebook, Google, Microsoft, Apple, IBM, Oracle, Amazon" split the string at the comma.
  15. What is the character at index 0 in the string Coding For All.
  16. What is the last index of the string Coding For All.
  17. What character is at index 10 in "Coding For All" string.
  18. Create an acronym or an abbreviation for the name 'Python For Everyone'.
  19. Create an acronym or an abbreviation for the name 'Coding For All'.
  20. Use index to determine the position of the first occurrence of C in Coding For All.
  21. Use index to determine the position of the first occurrence of F in Coding For All.
  22. Use rfind to determine the position of the last occurrence of l in Coding For All People.
  23. 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'
  24. 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'
  25. Slice out the phrase 'because because because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
  26. 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'
  27. Slice out the phrase 'because because because' in the following sentence: 'You cannot end a sentence with because because because is a conjunction'
  28. Does '\'Coding For All' start with a substring Coding?
  29. Does 'Coding For All' end with a substring coding?
  30. '   Coding For All      '  , remove the left and right trailing spaces in the given string.
  31. Which one of the following variables return True when we use the method isidentifier():
    • 4thdayOfPython
    • fourth_day_of_python
  32. 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.
  33. Use the new line escape sequence to separate the following sentences. py I am enjoying this challenge. I just wonder what is next.
  34. Use a tab escape sequence to write the following lines. py Name Age Country City Saroj 250 Nepal Lalitpur
  35. 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.
  1. 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