标题,例如我想把'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)
这是一种简单的方法:
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