【问题标题】:Mask multiple sensitive data using re.sub?使用 re.sub 屏蔽多个敏感数据?
【发布时间】:2020-08-05 15:06:41
【问题描述】:

我想屏蔽一个字符串中的几个值。此调用按预期适用于单个值。

message = "my password=secure and my private_key=securekey should not be logged."
message = re.sub(r"(?is)password=.+", "password=xxxx", str(message))

正则表达式必须是什么样子才能屏蔽字典中的多个值?

d = {"password": "xxxx", "private_key": "zzzz"}
message = re.sub(r"(?is)\w=.+", lambda m: d.get(m.group(), m.group()), message)

是否也可以在同一个正则表达式调用中将值替换为其他值?

message = re.sub(r"data_to_mask", "xzxzxzx", str(message))

【问题讨论】:

  • 您到底想达到什么目的?信息的显示由前端控制。因此它在 html 标签 rtc 中是 inbuit
  • @Onyambu 我想在字符串写入文件之前屏蔽掉字符串中的一些敏感数据

标签: python-3.x python-re


【解决方案1】:

你可以这样做:

message = "my password=secure and my private_key=securekey should not be logged."

import re
d = {"password": "xxxx", "private_key": "zzzz"}

def replace(x):
    key = x.group(1)
    val = d.get(key, x.group(2))
    return f"{key}={val}"

re.sub(r"\b(\w+)=(\w+)", replace, message)
my password=xxxx and my private_key=zzzz should not be logged.

【讨论】:

  • 感谢您的回复。如果还有带“-”的值,比如“api-key”而不是“private_key”,我该如何调整正则表达式?
  • @user5580578 使用(?<=\s)(\S+)=(\S+)
  • 我可以添加字典d作为replace方法的参数吗?
  • @user5580578 你为什么要这样做?只需将字典放在函数中即可。抱歉,如果此答案不符合您的需求。但到目前为止,山雀试图回答发布的问题
  • 字典的值可以根据使用这部分作为库依赖的 Python 模块而改变
猜你喜欢
  • 1970-01-01
  • 2018-08-15
  • 2015-07-18
  • 2023-03-29
  • 1970-01-01
  • 2020-05-01
  • 2022-12-01
  • 1970-01-01
  • 2017-03-22
相关资源
最近更新 更多