派森 #P127. 信息脱敏

描述

编写一个 Python 程序,读取data.in文件中的数据(utf-8编码),将其中的姓名、身份证、手机号码部分信息替换成*`进行脱敏处理,结果输出到data.out文件中。

格式

输入

读取文件data.in。

输出

结果存至data.out。

样例

data.in文件内容

姓名:周紫薇
居住地:北京
身份证号:110101199003073597
手机号:19838855767
姓名:广雨旋
居住地:上海
身份证号:310101199003074538
手机号:18334444671
姓名:国天欣
居住地:广州
身份证号:440103199003071398
手机号:17131292567
姓名:高白桃
居住地:深圳
身份证号:440303199003078179
手机号:15725375874

data.out文件内容

姓名:薇**
居住地:北京
身份证号:110101********3597
手机号:198****5767
姓名:旋**
居住地:上海
身份证号:310101********4538
手机号:183****4671
姓名:欣**
略...

代码:

import re

with open('data.in', 'r', encoding='utf-8') as f:
    data = f.read()
data = re.sub(r'姓名:(.{2})(.{1})(.*)', r'姓名:\3\2\1', data)
data = re.sub(r'姓名:(.{1})(.{1})(.*)', r'姓名:\1**', data)
data = re.sub(r'身份证号:(.{6})(.{8})(.*)', r'身份证号:\1********\3', data)
data = re.sub(r'手机号:(.{3})(.{4})(.*)', r'手机号:\1****\3', data)
with open('data.out', 'w', encoding='utf-8') as f:
    f.write(data)
print(data)

代码解析:

  1. import re:导入正则表达式模块re,用于处理文本中的匹配和替换操作。
  2. with open('data.in', 'r', encoding='utf-8') as f::打开名为'data.in'的文件,以只读模式读取('r'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量f。使用with语句可以确保在读取完毕后自动关闭文件,无需显式调用f.close()
  3. data = f.read():将文件内容全部读取为一个字符串,并将其赋值给变量data
  4. data = re.sub(r'姓名:(.{2})(.{1})(.*)', r'姓名:\3\2\1', data):使用正则表达式函数re.sub()进行替换。匹配以"姓名:"开头,后面跟着两个任意字符、一个任意字符、以及任意数量字符的部分。(.{2})表示任意两个字符的分组,(.{1})表示任意一个字符的分组,(.*)表示任意数量字符的分组。替换为以"姓名:"开头,后面跟着第三个分组、第二个分组、第一个分组的顺序。替换后的结果将重新赋值给变量data
  5. data = re.sub(r'姓名:(.{1})(.{1})(.*)', r'姓名:\1**', data):使用正则表达式函数re.sub()进行替换。匹配以"姓名:"开头,后面跟着一个任意字符、一个任意字符、以及任意数量字符的部分。替换为以"姓名:"开头,后面跟着第一个分组以及两个星号。替换后的结果将重新赋值给变量data
  6. data = re.sub(r'身份证号:(.{6})(.{8})(.*)', r'身份证号:\1********\3', data):使用正则表达式函数re.sub()进行替换。匹配以"身份证号:"开头,后面跟着六个任意字符、八个任意字符、以及任意数量字符的部分。替换为以"身份证号:"开头,后面跟着第一个分组、8个星号、第三个分组的顺序。替换后的结果将重新赋值给变量data
  7. data = re.sub(r'手机号:(.{3})(.{4})(.*)', r'手机号:\1****\3', data):使用正则表达式函数re.sub()进行替换。匹配以"手机号:"开头,后面跟着三个任意字符、四个任意字符、以及任意数量字符的部分。替换为以"手机号:"开头,后面跟着第一个分组、四个星号、第三个分组的顺序。替换后的结果将重新赋值给变量data
  8. with open('data.out', 'w', encoding='utf-8') as f::打开名为'data.out'的文件,以写入模式('w'),使用UTF-8编码(encoding='utf-8'),并将文件对象赋值给变量f
  9. f.write(data):将修改后的字符串data写入到文件data.out中。
  10. print(data):打印修改后的字符串data
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值