首页 > 解决方案 > 用给定的字符串替换字符串的字符

问题描述

给定这个字符串'www__ww_www_'

我需要用'_'以下字符串中的字符替换所有字符'1234'。结果应该是'www12ww3www4'

TEXT = 'aio__oo_ecc_'
INSERT = '1234'

insert = list(INSERT)
ret = ''

for char in TEXT:
    if char == '_':
        ret += insert[0]
        insert.pop(0)
    else:
        ret += char

print (ret)
>> aio12oo3ecc4

这样做的正确方法是什么?因为这似乎是最低效的方式。

标签: pythonstring

解决方案


您可以使用字符串迭代器和生成器表达式,其中包含三元组:

TEXT = 'aio__oo_ecc_'
INSERT = '1234'

it = iter(INSERT)
print("".join(next(it) if x == "_" else x for x in TEXT))

好处包括避免使用ret += char. 此外,pop(0)需要将整个列表向前移动,因此它是线性的(最好是反转INSERT并使用pop()):


推荐阅读