如何用星号替换切成薄片的单词的剩余部分?

pup*_*kik 3 python

因此,我正在尝试制作一个简单的小脚本,该脚本需要一个字符串,将其切成指定字符,然后用星号(*)替换单词的其余部分。下面的例子。

def multi_blank(strng, ch_count):
    """
    >>> multi_blank("banana", 1)
    'b*****'
    """
Run Code Online (Sandbox Code Playgroud)

当我尝试学习切片和索引编制时,总是会遇到麻烦。我设法切成指定的数字,但无法弄清楚如何用星号代替单词的其余部分。

    return strng[:ch_count] + "*" + strng[ch_count:]
Run Code Online (Sandbox Code Playgroud)

以上是我尝试过的内容,但返回以下内容:

Expected:
    'b*****'
Got:
    'b*anana'
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

    string = strng.replace(strng[ch_count:], '*')
    return string
Run Code Online (Sandbox Code Playgroud)

简短的解释将对您的帮助有所帮助。赞赏!

Dev*_*ngh 5

现在,您只*在切片后的字符串后面添加a ,然后在其后添加其余字符串

In [22]: strng = 'banana'                                                                                                                                                           

In [24]: strng[:1] + "*" + strng[1:]                                                                                                                                                
Out[24]: 'b*anana'
Run Code Online (Sandbox Code Playgroud)

因此,为了建立一个字符串的休息,可以乘以使用字符串重载乘法,*(len(strng) - ch_count)倍(感谢@ cs95您的建议),并追加到切片字符串的结尾

来自文档:https : //docs.python.org/3/reference/expressions.html#binary-arithmetic-operations

参数必须都是数字,或者一个参数必须是整数,另一个参数必须是序列。在前一种情况下,数字将转换为通用类型,然后相乘。在后一种情况下,执行序列重复;负的重复因子会产生一个空序列。

In [27]: strng = 'banana'                                                                                                                                                           

In [28]: strng[:1] + "*" * (len(strng)-1)                                                                                                                                           
Out[28]: 'b*****'
Run Code Online (Sandbox Code Playgroud)

因此,更新后的代码将是

def multi_blank(strng, ch_count):
    """
    >>> multi_blank("banana", 1)
    'b*****'
    """
    return strng[:ch_count] + "*" * (len(strng) - ch_count)

print(multi_blank("banana", 1))
Run Code Online (Sandbox Code Playgroud)

输出将是

b*****
Run Code Online (Sandbox Code Playgroud)