itailitai itailitai - 2 months ago 10
Python Question

How do I insert a space after and before a dash that is not already surrounded by spaces?

Let's say I have these strings:

string1= "Queen -Bohemian Rhapsody"

string2= "Queen-Bohemian Rhapsody"

string3= "Queen- Bohemian Rhapsody"


I want all of them to become to be like this:

string1= "Queen - Bohemian Rhapsody"
string2= "Queen - Bohemian Rhapsody"
string3= "Queen - Bohemian Rhapsody"


How can I do this in Python?

Thanks!

Answer

You can regexp:

import re
pat = re.compile(r"\s?-\s?") # \s? matches 0 or 1 occurenece of white space

# re.sub replaces the pattern in string
string1 = re.sub(pat, " - ", string1)
string2 = re.sub(pat, " - ", string2)
string3 = re.sub(pat, " - ", string3)