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

String 如何从替换字符所有非实例的原始字符串创建新字符串,string,python-3.x,String,Python 3.x,假设我有一个随机字符串“密西西比” 我想从“Mississippi”创建一个新字符串,但替换特定字符的所有非实例 例如,如果我们使用字母“S”。在新字符串中,我希望保留“MISSISSIPPI”中的所有S,并将所有其他字母替换为“\” 我知道如何做相反的事情: word = "MISSISSIPPI" word2 = word.replace("S", "_") print(word2) word2给了我MI_uuui_uuuuippi 但我不知道如何让word2成为____ (经典的刽子手游

假设我有一个随机字符串“密西西比”

我想从“Mississippi”创建一个新字符串,但替换特定字符的所有非实例

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

我知道如何做相反的事情:

word = "MISSISSIPPI"
word2 = word.replace("S", "_")
print(word2)
word2给了我MI_uuui_uuuuippi

但我不知道如何让word2成为____

(经典的刽子手游戏)

您需要使用Python字符串和正则表达式的方法来表示非字符集,例如

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

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

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

import re

word = "MISSISSIPPI"

show = 'S'  # augment as the game progresses

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

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

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