Python 信息脱敏

该Python程序读取data.in文件,对姓名、身份证号和手机号进行脱敏处理,替换敏感信息为星号,并将处理后的结果保存到data.out文件中。脱敏规则包括:姓名的最后两个字符、手机号的中间四位和身份证号的中间八位替换为*。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

描述

编写一个 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))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值