2017-10-08 107 views
1

所以我们可以说我有一个随机字符串“密西西比”如何从原始的字符串替换字符的所有非实例创建一个新的字符串

我想从“密西西比”创建一个新的字符串,但替换所有一个特定角色的非实例。

例如,如果我们使用字母“S”。在新的字符串中,我想保留所有S在“MISSISSIPPI”中,并用“_”替换所有其他字母。

我知道该怎么做反向:

word = "MISSISSIPPI" 
word2 = word.replace("S", "_") 
print(word2) 

WORD2给我MI__I__IPPI

,但我无法弄清楚如何让WORD2是__SS_SS____

(经典的刽子手游戏)

回答

1

您需要使用带有正则表达式的Python字符串的sub方法来表示NOT字符集,例如

import re 
line = re.sub(r"[^S]", "_", line) 

这将用任何字符替换任何非S字符。

0

你可以用str.maketrans()str.translate()这样做,但用正则表达式会更容易。关键是你需要在你的有效字符的字符串插入到正则表达式programattically:

import re 

word = "MISSISSIPPI" 

show = 'S' # augment as the game progresses 

print(re.sub(r"[^{}]".format(show), "_", word)) 
+0

你能告诉第一种方式? – Neo

0

更简单的方法是将整个字符串映射功能:

>>> ''.join(map(lambda w: '_' if w != 'S' else 'S', 'MISSISSIPPI')) 
'__SS_SS____' 
相关问题