如何从原始的字符串替换字符的所有非实例创建一个新的字符串
问题描述:
所以我们可以说我有一个随机字符串“密西西比”如何从原始的字符串替换字符的所有非实例创建一个新的字符串
我想从“密西西比”创建一个新的字符串,但替换所有一个特定角色的非实例。
例如,如果我们使用字母“S”。在新的字符串中,我想保留所有S在“MISSISSIPPI”中,并用“_”替换所有其他字母。
我知道该怎么做反向:
word = "MISSISSIPPI"
word2 = word.replace("S", "_")
print(word2)
WORD2给我MI__I__IPPI
,但我无法弄清楚如何让WORD2是__SS_SS____
(经典的刽子手游戏)
答
您需要使用带有正则表达式的Python字符串的sub方法来表示NOT字符集,例如
import re
line = re.sub(r"[^S]", "_", line)
这将用任何字符替换任何非S字符。
答
你可以用str.maketrans()
和str.translate()
这样做,但用正则表达式会更容易。关键是你需要在你的有效字符的字符串插入到正则表达式programattically:
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____'
你能告诉第一种方式? – Neo