2016-09-30 58 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