替换文件中的敏感信息

简介: 假设我们有一份文件,文件中包含了很多个人信息。现在需要一份去除其中敏感信息的版本,将文件中所有手机号的4~7位和身份证号的6~15位用 * 替换。

Long long time no see.『每日一坑』栏目又来啦!


今天我们来做一个现实中有可能会碰到的问题:


替换文件中的敏感信息


问题描述


假设我们有一份文件,文件中包含了很多个人信息。现在需要一份去除其中敏感信息的版本,将文件中所有手机号的4~7位和身份证号的6~15位用 * 替换。


(注意:有的身份证号是以X结尾)


示例


输入文件


张三

居住地:南京

身份证号:320101199909091234

手机号:13013013130

李四

居住地:上海

身份证号:31010120000101234X

手机号:13913912345

王五

居住地:北京

身份证号:110101198808082222

手机号:13766654321


输出文件


张三

居住地:南京

身份证号:32010**********234

手机号:130****3130

李四

居住地:上海

身份证号:31010**********34X

手机号:139****2345

王五

居住地:北京

身份证号:11010**********222

手机号:137****4321


附加要求


  1. 对指定文件夹中的所有文件进行批量处理
  2. 对 Excel 文档进行同样操作

期待各位同学提交解答。


提交代码可以使用 paste.ubuntu.com 或 codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。


往期问题可点击文末“阅读原文”通过公众号菜单栏“课外辅导”栏目中进入查看。



【解答】黑色星期五


上一次的题目【每周一坑】黑色星期五,如果使用 datetime、calendar、time 等模块的话,代码就比较简单了。


waket、星辰之门、大马猴 ଲ、Mr. wang、橄榄树、Mr.二马、cheng_y、Lance、王目田|xa、F0rever、小呆、阳光海岸 等同学都提交了正确的答案,需要的同学可以去上一篇的留言中查看。


这里分享下 waket 的代码:


from datetime import date
year = int(input('inquire year: '))
days = [date(year, i, 13) for i in range(1, 13)]
fridays = [str(i) for i in days if f'{i:%a}' == 'Fri']
print('Black Friday:\n{}'.format("\n".join(fridays)))


代码中使用到了 Python 3.6 的一个新特性 f-string,即将表达式嵌入到字符串中的一种方法。有兴趣的同学可以自行搜索下相关资料,之后有机会我会来专门介绍下。


另外,小渺、风儿、透明天使SK 等同学未使用模块,直接通过代码实现了题目要求。这其实是出这题的本意,不过我当时并未强求。作为一道练习,两种思路都可以。

欢迎在论坛 bbs.crossincode.com 上对代码做进一步讨论。


感谢大家的积极参与!期待在下一期中看到你的代码!


  • 别忘了将我们的文章转发朋友圈或在知乎上为我们的专栏点赞,你们的支持将会让编程教室做得更好:)

推荐阅读:

100万 | 技术宅 | 火箭 | 火车票 | 单词表 | 冲顶大会 | 押韵工具 | 新手建议 | Python就业

相关文章
|
1月前
|
存储 JSON Kubernetes
在K8S中,存储敏感信息方式有哪些?
在K8S中,存储敏感信息方式有哪些?
|
3月前
去除程序名称 去除程序属性详细信息中的程序名称 创建时间等信息
去除程序名称 去除程序属性详细信息中的程序名称 创建时间等信息
27 0
|
Shell Linux
附加到文件
附加到文件
41 1
|
存储 算法 安全
「密码」这种敏感信息,到底该如何存储?
「密码」这种敏感信息,到底该如何存储?
|
安全
安全漏洞问题5:上传任意文件
上传任意文件漏洞是指用户可以上传所有文件,程序没有检测上传文件大小、类型是否是符合期望,或仅仅在客户端对上传文件大小、上传文件类型进行限制,未在服务器端进行验证。恶意用户可以利用例如上传一些恶意的程序,比如图片木马。
2755 0