用星号替换字符串中的所有字符

时间:2015-11-12 03:56:46

标签: python string

我有一个字符串

name = "Ben"

我变成了一个列表

word = list(name)

我想用星号替换列表中的字符。我怎么能这样做?

我尝试使用.replace函数,但这太具体了,并没有立即更改所有字符。

我需要一个适用于任何字符串的通用解决方案。

4 个答案:

答案 0 :(得分:11)

  

我想用星号

替换列表中的字符

相反,创建一个只有星号的新字符串对象,比如

word = '*' * len(name)

在Python中,您可以将字符串与数字相乘以获得相同的字符串连接。例如,

>>> '*' * 3
'***'
>>> 'abc' * 3
'abcabcabc'

答案 1 :(得分:2)

您可以通过以下方式用星号替换列表中的字符:

方法1

for i in range(len(word)):
    word[i]='*'

这种方法是更好的IMO,因为没有使用额外的资源,因为列表中的元素实际上被星号“替换”了。

方法2

word = ['*'] * len(word)

OR

word = list('*' * len(word))

在此方法中,将创建一个长度相同的新列表(仅包含星号),并将其分配给“word”。

答案 2 :(得分:1)

  

我想用星号替换列表中的字符。我怎么能够   这样做?

我会非常字面地回答这个问题。有时您可能需要将其作为一个步骤执行,特别是在表达式

中使用它时

您可以利用str.translate方法并使用256大小的转换表来屏蔽所有字符到星号

>>> name = "Ben"
>>> name.translate("*"*256)
'***'

注意因为字符串是不可变的,所以它会在改变原始字符串的过程中创建一个新的字符串。

答案 3 :(得分:0)

可能您正在寻找类似的东西吗?

def blankout(instr, r='*', s=1, e=-1):
    if '@' in instr:
        # Handle E-Mail addresses
        a = instr.split('@')
        if e == 0:
            e = len(instr)
        return instr.replace(a[0][s:e], r * (len(a[0][s:e])))
    if e == 0:
        e = len(instr)
    return instr.replace(instr[s:e], r * len(instr[s:e]))