s=re.sub(r'(?<=^\d{6})\d+(?=\d{4}$)', '*', '123456999999991234')
print(s)
想把里面的9
全部替换为*
,也就是去敏
,
但是这样写之后,全部9
会被替换为1个*
号,像这样123456*1234
。
怎么改才可以变成这样123456********1234
。
s=re.sub(r'(?<=^\d{6})\d+(?=\d{4}$)', '*', '123456999999991234')
print(s)
想把里面的9
全部替换为*
,也就是去敏
,
但是这样写之后,全部9
会被替换为1个*
号,像这样123456*1234
。
怎么改才可以变成这样123456********1234
。
按照我的理解,你的需求是如果有一串字符全由数字构成并且长度大于10位,则将除了前6位和后4位外的其他数字全部替换成*号
可以这样实现:
s = '123456999999991234'
if re.match(r'\d{11,}', s):
s = s[:6] + '*'*len(s[6:-4]) + s[-4:]
print(s)
如果你想脱敏的部分和顺序无关的话,可以试下这种方法:
import string
raw = '123456999999991234'
print raw.translate(string.maketrans('9', '*')) # 支持多种字符替换
输出:
123456********1234
2 回答5.1k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答1.1k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
1 回答1.7k 阅读✓ 已解决
1 回答1.2k 阅读✓ 已解决