python - 如何用asterix替换切片单词的其余部分?
问题描述
因此,我正在尝试制作一个简单的小脚本,该脚本接受一个字符串,将其切成指定的字符并用星号 (*) 替换单词的其余部分。下面的例子。
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
当我尝试学习切片和索引时,我总是遇到麻烦。我设法切成指定的数字,但无法弄清楚如何用星号替换单词的其余部分。
return strng[:ch_count] + "*" + strng[ch_count:]
以上是我尝试过的,但它返回以下内容:
Expected:
'b*****'
Got:
'b*anana'
我也试过:
string = strng.replace(strng[ch_count:], '*')
return string
任何帮助将不胜感激,并简要说明它是如何完成的。欣赏它!
解决方案
现在你只是*
在切片字符串之后附加一个,然后在它之后添加字符串的其余部分
In [22]: strng = 'banana'
In [24]: strng[:1] + "*" + strng[1:]
Out[24]: 'b*anana'
因此,为了创建字符串的其余部分,您可以对字符串使用重载乘法,通过乘以*
时间(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*****'
因此更新的代码将是
def multi_blank(strng, ch_count):
"""
>>> multi_blank("banana", 1)
'b*****'
"""
return strng[:ch_count] + "*" * (len(strng) - ch_count)
print(multi_blank("banana", 1))
输出将是
b*****
推荐阅读
- sqlite - 聚合查询
- regex - 在 from 和 to 文本中查找特定的数字组合
- javascript - 使用 Javascript 函数不工作从所有 DOM 元素中删除隐藏的属性,但其索引已给出
- php - 一种存储营业时间以确定某个地方现在是否营业的方法
- python-3.x - 如何确定图片上不同形状的数量?
- php - 为什么需要为 localhost 和 Laravel 项目本身创建虚拟主机
- testing - 在 redux 操作测试中出错
- gitlab - 如何在gitlab中直接访问项目的文件夹?
- node.js - 您能否保留指向 AWS Fargate 托管容器应用程序的 API,而无需支付费用以保持容器永久运行?
- kernel-module - Windows 内核驱动程序签名问题(WFP/Inspect)