2016-09-30 7 views
2

だが、私はこれらの文字列を持っているとしましょう:スペースで囲まれていないダッシュの前後にスペースを挿入するにはどうすればよいですか?

string1= "Queen -Bohemian Rhapsody" 

string2= "Queen-Bohemian Rhapsody" 

string3= "Queen- Bohemian Rhapsody" 

私はそれらのすべてがこのようになりなりたい:

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

私はPythonでこれを行うことができますどのように?

ありがとうございます!

+0

マッチオプションのスペースの前に、オプションのマッチ修飾子を使用した後に正規化して交換してください「' - '」「''?」。関連項目https://docs.python.org/2/library/re.html#regular-expression-syntax –

+0

'[\ t \ n \ r \ f \ v]'のセットにあるものと同じ空白を意味しますか?またはリテラルスペース文字?例えば、 '' Queen \ t- \ tBohemian Rhapsody ''を入力として、すでに空白があるか、スペースに置き換えられているので、そのままタブを保持していますか? – stevenjackson121

答えて

7

あなたが正規表現できます:

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) 
+0

厳密に言えば、これは元の文字列 '' Queen \ t- \ tBohemian Rhapsody'' - > '' Queen-Bohemian Rhapsody ''にある空白文字を上書きします。以前に存在しなかった場合(あるいはそれに触れていない場合)にのみ空白を挿入するという要件がある場合は、別の方法が必要になります。 – stevenjackson121

+0

それは面白いです、私はそれを念頭に置いていませんでした。もし置き換えが許可されていない場合は、私はこのソリューションが完璧ではないと思う。 –

+0

助けてくれてありがとう! – itailitai

関連する問題