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

时间:2017-02-01 06:47:50

标签: python regex

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

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

1:如果存在,则删除国家/地区代码

2:用星号替换中间的4位数字

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

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

如果我有+989201234841我想要这个:0920 **** 841

是否可以这样做?

1 个答案:

答案 0 :(得分:3)

使用字符串切片

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']