Answer:
There is a problem in the given code in the following statement:
Problem:
punctuation = r"[.?!,;:-']"
This produces the following error:
Error:
bad character range
Fix:
The hyphen - should be placed at the start or end of punctuation characters. Here the role of hyphen is to determine the range of characters. Another way is to escape the hyphen - using using backslash \ symbol.
So the above statement becomes:
punctuation = r"[-.?!,;:']"
You can also do this:
punctuation = r"[.?!,;:'-]"
You can also change this statement as:
punctuation = r"[.?!,;:\-']"
Explanation:
The complete program is as follows. I have added a print statement print('string1:',string1,'\nstring2:',string2) that prints the string1 and string2 followed by return string1 == string2 which either returns true or false. However you can omit this print('string1:',string1,'\nstring2:',string2) statement and the output will just display either true or false
import re #to use regular expressions
def compare_strings(string1, string2): #function compare_strings that takes two strings as argument and compares them
string1 = string1.lower().strip() # converts the string1 characters to lowercase using lower() method and removes trailing blanks
string2 = string2.lower().strip() # converts the string1 characters to lowercase using lower() method and removes trailing blanks
punctuation = r"[-.?!,;:']" #regular expression for punctuation characters
string1 = re.sub(punctuation, r"", string1) # specifies RE pattern i.e. punctuation in the 1st argument, new string r in 2nd argument, and a string to be handle i.e. string1 in the 3rd argument
string2 = re.sub(punctuation, r"", string2) # same as above statement but works on string2 as 3rd argument
print('string1:',string1,'\nstring2:',string2) #prints both the strings separated with a new line
return string1 == string2 # compares strings and returns true if they matched else false
#function calls to test the working of the above function compare_strings
print(compare_strings("Have a Great Day!","Have a great day?")) # True
print(compare_strings("It's raining again.","its raining, again")) # True
print(compare_strings("Learn to count: 1, 2, 3.","Learn to count: one, two, three.")) # False
print(compare_strings("They found some body.","They found somebody.")) # False
The screenshot of the program along with its output is attached.