2015-08-18 51 views
3

假設我有一個字符串使用應用re.sub和替換字符串使用變量在Python

the_string = "the brown fox" 

我wan't用字符數來替換空間,例如,5破折號正則表達式標記

new_string = "the-----brown-----fox" 

但這將是一個變量,所以我不能只是做:

the_string = 'the brown fox' 
new_string = re.sub(r'\s', '-----', the_string) 

我需要這樣的東西如下:

the_string = 'the brown fox' 
num_dashes = 5 
new_string = re.sub(r'\s', r'-{num_dashes}', the_string) 

是這樣的可能嗎?

+0

是有一些原因,你不想使用[str.replace(舊的,新\ [,count \])](https://docs.python.org/3/library/stdtypes.html#str.replace)?你可以寫'new_string = the_string.replace('',' - '* num_dashes)'。 –

+0

在這種情況下,這將工作得很好。 str.replace是否使用正則表達式?例如,如果我需要替換一個或多個空格。可能是一個,可能是多個。 – Eddie

+0

那麼你是正確的。您可能想要使用're'模塊來創建可變數量的空白字符。 'str.replace'方法不適用於正則表達式。 –

回答

3

定義函數是的,你可以這樣做:

the_string = 'the brown fox' 
num_dashes = 5 
re.sub(r'\s', '-'*num_dashes, the_string) 
0
def repl(matchobj): 
    if matchobj.group(): 
     #do something 
     #return whatever you want to replace 

my_str = "the brown fox" 

pattern = r"\s+" 
print re.sub(pattern, repl, my_str) 

可以在re.sub