繁体   English   中英

Python正则表达式用星号替换中间的一些数字

[英]Python regex replace some digits in the middle with asterisk

我正在尝试用星号(*)替换10到14位长数字的某些部分。

实际上,这是我想做的两件事:

1:消除国家代码(如果存在)

2:将中间的四位数替换为星号

如果我有:9151234567我想要这个:0915 **** 576

如果我有:09361234321我想要这个:0936 **** 321

如果我有+989201234841,请输入:0920 **** 841

是否有可能做到这一点?

带字符串切片

nos =["9151234567", "09361234321", "+989201234841"]
print ['0'+a[-10:][:3]+'****'+a[-10:][-3:] for a in nos]

输出:

['0915****567', '0936****321', '0920****841']

a[-10:]将对后10位进行切片。


使用正则表达式:

import re

nos =["9151234567", "09361234321", "+989201234841"]
print [re.sub(r".*?(\d{3})(\d{4})(\d{3})$", r'0\1****\3', a) for a in nos]

输出:

['0915****567', '0936****321', '0920****841']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM