Python - 如何在字符后用字符串乘以字符串中的字符

use*_*025 7 python

标题,例如我想把'A3G3A'变成'AAAGGGA'.到目前为止我有这个:

if any(i.isdigit() for i in string):
    for i in range(0, len(string)):
        if string[i].isdigit():
             (i am lost after this)
Run Code Online (Sandbox Code Playgroud)

cdl*_*ane 8

这是一种简单的方法:

string = 'A3G3A'

expanded = ''

for character in string:
    if character.isdigit():
        expanded += expanded[-1] * (int(character) - 1)
    else:
        expanded += character

print(expanded)
Run Code Online (Sandbox Code Playgroud)

输出:AAAGGGA

它假定有效输入.它的局限性在于重复因子必须是一个数字,例如2 - 9.如果我们想要重复因子大于9,我们必须对字符串进行稍微解析:

from itertools import groupby

groups = groupby('DA10G3ABC', str.isdigit)

expanded = []

for is_numeric, characters in groups:

    if is_numeric:
        expanded.append(expanded[-1] * (int(''.join(characters)) - 1))
    else:
        expanded.extend(characters)

print(''.join(expanded))
Run Code Online (Sandbox Code Playgroud)

输出:DAAAAAAAAAAGGGABC