Python中相当基本的字符串扩展?

时间:2016-01-25 21:53:22

标签: python string function python-3.x

我正在尝试创建一个将采用“压缩”字符串的函数,例如

'a12b3c'

并返回其“展开”形式,对于此示例将为

'aaaaaaaaaaaabbbc'

如果角色后面没有数字,则每个角色应重复多次,如果跟随角色,则重复一次。

如果“压缩”字符串中的数字值只是一位数字,我能够创建一个能够执行此操作的函数,因此我的尝试适用于像

这样的字符串
'a3b2c6'

但我似乎无法找到一种方法来考虑数值超过一位数的情况。

2 个答案:

答案 0 :(得分:7)

使用正则表达式:

>>> import re
>>> compressed = "a12b3c"
>>> expanded = ""
>>> for char, count in re.findall(r'(\w)(\d+)?', compressed):
...     count = int(count or 1)
...     expanded += char*count
... 
>>> expanded
'aaaaaaaaaaaabbbc'

答案 1 :(得分:2)

这是一个带有生成器表达式的oneliner:

>>> import re
>>> s = 'a12b3c'
>>> ''.join(x*int(y or 1) for x,y in re.findall('(\w)(\d*)', s))
'aaaaaaaaaaaabbbc'