仅替换字符串中的字母

时间:2012-10-19 02:23:34

标签: python string replace

我需要返回给定的谜题,每个字母字符都被HIDDEN字符替换。

HIDDEN = '^' 

def blah(r):
    r = HIDDEN * len(r)
    return r

此函数用于替换我需要的任何字符串,但问题是要求替换每个ALPHABETIC字符。

所以我不能将4'?替换为HIDDEN,因为它们不是字母字符。

我应该怎么做?

4 个答案:

答案 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