How to Compare Strings in Python
A string in Python is an iterable data type with each character in the string having its own index. As a result, it is possible to compare strings in a variety of different ways such as comparing lengths or comparing individual indexes on each string.
In this tutorial, we will learn how to compare strings in Python with examples.
How String Comparisons Work in Python
Python compares strings on a character by character basis. Characters are ordered alphabetically with the last letter
z having the highest value and
a the lowest; capital letters are less than lowercase letters and numbers are less than all letters. Here are a couple of examples to demonstrate how this works:
a is not greater than
result = 'a' > 'b' print(result)
a is greater than
result = 'a' > 'A' print(result)
a is greater than
result = 'a' > '5' print(result)
Knowing how string comparisons are performed by Python it is easy to see why the statement below returns
result = 'abdd' > 'abcd' print(result)
Python iterates through each character and when it sees that
d is greater than
True is returned.
The Result of a String Comparison
A comparison statement will always return
True meaning correct, a match was found and
False for no match. This means the result can be stored in a variable or used directly on
result = 'a' == 'a' if (result): print(result)
The Python Comparison Operators
Here are the Python operators that can be used to make string comparisons:
>- greater than
<- less than
==- equal to; not to be confused with
>=- greater than or equal to
<=- less than or equal to
!=- not equal to
Here are a couple of examples of using different comparison operators:
# not equal to result = 'a' != 'b' print(result)
# less than or equal to result = 'a' <= 'b' print(result)
# greater than or equal to result = 'a' >= 'b' print(result)
Compare Strings and Number Objects
Python does not automatically convert number objects into strings when compared with a string. To compare strings and numbers, the number will need to be converted to a string using str().
result = '1' == 1 print(result)
result = '1' == str(1) print(result)
Since characters are compared lexicographically, strings with different cases will have to be converted to lower or upper case using the
lower() methods for them to return
str_1 = 'Manchester' str_2 = 'MANCHESTER' result = str_1.lower() == str_2.lower() print(result)
Check if a String is Longer than Another String
To see if one string is longer than another we get the length of each string using the
len() function and compare the output using a
> (greater than) comparison statement.
str_1 = 'Manchester' str_2 = 'MANCHESTER' result = len(str_1) > len(str_2) print(result)
Match Strings with Regular Expressions
To match strings with regex, import the native
re Python package. Then a regex pattern can be stored in a variable using the
import re str_list = ['apple', 'two', 'too'] pattern = re.compile('t[wo]o') for s in str_list: if pattern.search(s): print('Match!', s) else: print('No match:', s)
No match: apple Match! two Match! too
The regex in the above example is
 (square brackets) to match any one of the two characters contained within the brackets.
Compare Multi-line Strings
To compare multi-line strings in Python we can use the
difflib package. Once
difflib has been imported, use the
difflib.Differ() to create a new
difflib object and then use the
compare() method, passing the strings to compare as two arguments.
import difflib string = """hello this is a line and this is a line and another line""" string_edit = """hello this is a line and this is an updated line and another line""" diff = difflib.Differ() result = diff.compare(string.split('\n'), string_edit.split('\n')) print('\n'.join(result))
hello this is a line - and this is a line + and this is an updated line ? +++++++++ and another line
difflib will return lines starting with a
- (dash) that have been changed followed by the updated line starting with a
You now know how to work with strings in Python, including the available comparison statements and how Python evaluates strings.