擅长:python、mysql、java
<p>你可以这样做:</p>
<pre><code>credit1 = '1234 4214 1521 5132'
credit2 = '52310259 1269102392'
s = credit1[-4:].rjust(len(credit1), '*')
print(s)
s = credit2[-4:].rjust(len(credit2), '*')
print(s)
</code></pre>
<p>您得到的输出是:</p>
^{pr2}$
<p>另一种使用regex的解决方案:</p>
<pre><code>import re
print(re.sub('\d', '*', credit1[:-4]) + credit1[-4:])
print(re.sub('\d', '*', credit2[:-4]) + credit2[-4:])
</code></pre>
<p>将保留空格,输出为:</p>
<pre><code>**** **** **** 5132
******** ******2392
</code></pre>
<p><strong>编辑</strong>
用户希望保留<code>k</code>位数的解决方案:</p>
<pre><code>import re
k = 7
c1 = len(re.sub("[^0-9]", "", credit1)) - k
c2 = len(re.sub("[^0-9]", "", credit2)) - k
print(re.sub('\d', '*', credit1, c1))
print(re.sub('\d', '*', credit2, c2))
</code></pre>
<p><code>k=3/4/5/6/7</code>的输出是:</p>
<pre><code>**** **** **** *132
******** *******392
**** **** **** 5132
******** ******2392
**** **** ***1 5132
******** *****02392
**** **** **21 5132
******** ****102392
**** **** *521 5132
******** ***9102392
</code></pre>