我需要返回给定的谜题,每个字母字符都被HIDDEN字符替换。
HIDDEN = '^'
def blah(r):
r = HIDDEN * len(r)
return r
此函数用于替换我需要的任何字符串,但问题是要求替换每个ALPHABETIC字符。
所以我不能将4
或'
或?
替换为HIDDEN,因为它们不是字母字符。
我应该怎么做?
答案 0 :(得分:7)
一种方法:使用翻译方法:
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)
答案 1 :(得分:2)
结帐maketrans,您可以创建从string.letters
到^
的转换表,然后再使用它。
答案 2 :(得分:1)
我总是发现maketrans
有点难以理解,所以我通常会依赖更原始的方式来做这些事情(这对我来说更有意义):
def make_hidden(instr):
return ''.join(c if c.isalpha() else '^' for c in instr)
答案 3 :(得分:1)
返回给定的谜题,每个字母字符由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