擅长:python、mysql、java
<pre><code>import re
b = ''.join(c * int(n) for c, n in re.findall(r'(\w)(\d+)', a))
</code></pre>
<p>正则表达式将每个字母与以下数字(容纳多位数数字)匹配,并分组返回:</p>
<pre><code>>>> re.findall(r'(\w)(\d+)', a)
[('a', '3'), ('b', '4'), ('c', '2')]
</code></pre>
<p>然后你只需要对它们进行迭代</p>
<pre><code>for c, n in ...
# c = 'a'
# n = '3'
# ...
</code></pre>
<p>…并使它们成倍增长</p>
<pre><code>c * int(n)
</code></pre>
<p>…只需在生成器表达式中执行此操作</p>
<pre><code>c * int(n) for c, n in re.findall(r'(\w)(\d+)', a)
</code></pre>
<p>…和<code>''.join</code>将所有生成的小字符串放在一起</p>
<p>为了好玩,这里有一个版本,它甚至允许不带数字的独立字母:</p>
<pre><code>a = 'a3bc4d2e'
b = ''.join(c * int(n or 1) for c, n in re.findall(r'(\w)(\d+)?', a))
# aaabccccdde
</code></pre>