如何从原始字符串创建新字符串替换字符的所有非实例

时间:2017-10-08 06:54:15

标签: string python-3.x

所以,让我们说我有一个随机字符串" Mississippi"

我想要创建一个来自" Mississippi"的新字符串。但是替换了特定角色的所有非实例。

例如,如果我们使用字母" S"。在新的字符串中,我希望将所有S" MISSISSIPPI"并使用" _"替换所有其他字母。

我知道如何反过来:

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

word2给了我MI__I__IPPI

但我无法弄清楚如何让word2成为__SS_SS ____

(经典的Hangman游戏)

3 个答案:

答案 0 :(得分:1)

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

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

用任意字符替换任何非S字符。

答案 1 :(得分:0)

您可以使用str.maketrans()str.translate()执行此操作,但使用正则表达式会更容易。诀窍是你需要以编程方式将有效字符串插入到正则表达式中:

import re

word = "MISSISSIPPI"

show = 'S'  # augment as the game progresses

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

答案 2 :(得分:0)

更简单的方法是在字符串中映射函数:

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