我需要返回给定的谜题,每个字母字符都被隐藏字符替换。
HIDDEN = '^'
def blah(r):
r = HIDDEN * len(r)
return r
此函数可用于替换我需要的任何字符串,但问题特别要求替换每个 ALPHABETIC 字符。
所以我不能有4
或被HIDDEN 取代'
,?
因为它们不是字母字符。
我该怎么办?
一种方法:使用translate方法:
import string
table = string.maketrans(string.ascii_letters, '^'*len(string.ascii_letters))
def blah(r):
return r.translate(table)
另一种方法:使用re.sub
:
import re
def blah(r):
return re.sub(r'[a-zA-Z]', r'^', r)
查看maketrans,您可以创建一个转换表 from string.letters
to^
然后使用它。
我总是觉得maketrans
有点难以理解,所以我通常会使用更原始的方式来做这些事情(这对我来说更有意义):
def make_hidden(instr):
return ''.join(c if c.isalpha() else '^' for c in instr)
返回给定的谜题,每个字母字符都替换为 HIDDEN 字符。
HIDDEN = '^'
def blah(r):
new_r = ""
for ch in r:
if ch in 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ':
new_r += HIDDEN
else:
new_r += ch
return new_r