String 如何从替换字符所有非实例的原始字符串创建新字符串
假设我有一个随机字符串“密西西比” 我想从“Mississippi”创建一个新字符串,但替换特定字符的所有非实例 例如,如果我们使用字母“S”。在新字符串中,我希望保留“MISSISSIPPI”中的所有S,并将所有其他字母替换为“\” 我知道如何做相反的事情: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成为____ (经典的刽子手游
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____'