描述
编写一个 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
姓名:欣**
略...
# 定义输入文件名和一个用于存储结果的空列表
file_name = "data.in"
result = []
# 打开输入文件进行读取
with open(file_name, "rt", encoding="utf-8") as fid:
# 遍历文件中的每一行
for line in fid:
# 去除行末的空白字符(如换行符)
line = line.strip()
# 使用中文冒号分割字符串
line_lt = line.split(":")
# 根据字段名进行处理
if line_lt[0] == "姓名":
# 如果姓名长度为2,用'*'替换最后一个字符
if len(line_lt[1]) == 2:
line_lt[1] = line_lt[1][-1] + "*"
else:
# 如果姓名长度不为2,用两个'*'替换最后两个字符
line_lt[1] = line_lt[1][-1:] + "**"
# 处理后的字符串重新组合并添加到结果列表
result.append(":".join(line_lt))
elif line_lt[0] == "手机号":
# 将手机号中间4位替换为'*'
line_lt[1] = line_lt[1][:3] + 4 * "*" + line_lt[1][-4:]
# 处理后的字符串重新组合并添加到结果列表
result.append(":".join(line_lt))
elif line_lt[0] == "身份证号":
# 将身份证号中间8位替换为'*'
line_lt[1] = line_lt[1][:6] + 8 * "*" + line_lt[1][-4:]
# 处理后的字符串重新组合并添加到结果列表
result.append(":".join(line_lt))
else:
# 对于其他字段,不进行处理,直接添加到结果列表
result.append(":".join(line_lt))
# 每行处理完后添加换行符
result.append("\n")
# 打开输出文件进行写入
with open("data.out", "wt", encoding="utf-8") as fid:
# 将结果列表中的所有内容写入输出文件
fid.write(''.join(result))