def choose(): root=tk.Tk() root.title("数据脱敏") root.geometry("1000x750") tk.Label(root, text="请输入想要脱敏的信息:", font=("微软雅黑 -30")).place(x=10, y=15) tk.Label(root, text="手机号:",font=("微软雅黑 -20")).place(x=10, y=60) phone_input=tk.StringVar() frame_phone_input=tk.Entry(root, textvariable=phone_input) frame_phone_input.place(x=90, y=68,height=20,width=120) tk.Label(root, text="身份证号:",font=("微软雅黑 -20")).place(x=10, y=100) id_input=tk.StringVar() frame_id_input=tk.Entry(root, textvariable=id_input) frame_id_input.place(x=110, y=108,height=20,width=140) tk.Label(root, text="邮箱:",font=("微软雅黑 -20")).place(x=10, y=140) id_input=tk.StringVar() frame_youxiang_input=tk.Entry(root, textvariable=id_input) frame_youxiang_input.place(x=75, y=148,height=20,width=120) tk.Label(root, text="出生日期:",font=("微软雅黑 -20")).place(x=10, y=180) id_input=tk.StringVar() frame_date_input=tk.Entry(root, textvariable=id_input) frame_date_input.place(x=110, y=188,height=20,width=120) btn1 = tk.Button(root, text="替换", font=("微软雅黑 -20"),bg='pink',command=lambda: tihuan(frame_phone_input, frame_id_input, root)) btn1.place(x=10, y=250) def tihuan(frame_phone_input, frame_id_input, root): phone_input = frame_phone_input.get() id_input = frame_id_input.get() # 替换手机号和身份证号码的函数 def replace_sensitive_info(match): sensitive_info = match.group(0) if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号 return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:] elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号 return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:] else: return sensitive_info # 数据脱敏函数 def desensitize_data(phone_input, id_input): data = phone_input + ' ' + id_input pattern = re.compile(r'1\d{10}|\d{17}[\dXx]') # 替换所有匹配的敏感信息 desensitized_data = re.sub(pattern, replace_sensitive_info, data) return desensitized_data # 测试数据脱敏函数 data = desensitize_data(phone_input, id_input) a1 = tk.Label(root, text=("手机号和身份证号:", data), font=("微软雅黑 -20")) a1.place(x=10, y=300)怎么把生成的数据外面的大括号去掉
时间: 2024-01-28 20:05:01 浏览: 63
在函数tihuan()中,生成的数据是一个字符串,如果想去掉外面的大括号,可以使用strip()函数去掉字符串两端的大括号。具体来说,在a1的text属性中,将字符串格式化为"{data}",并在字符串前后加上大括号,然后使用strip()函数去掉大括号即可。修改后的代码如下:
```
a1 = tk.Label(root, text="{%s}" % data, font=("微软雅黑 -20"))
a1.place(x=10, y=300)
desensitized_data = a1.cget("text").strip("{}")
```
相关问题
def choose(): root=tk.Tk() root.title("数据脱敏") root.geometry("1000x750") tk.Label(root, text="请输入想要脱敏的信息:", font=("微软雅黑 -30")).place(x=10, y=15) tk.Label(root, text="手机号:",font=("微软雅黑 -20")).place(x=10, y=60) phone_input=tk.StringVar() frame_phone_input=tk.Entry(root, textvariable=phone_input) frame_phone_input.place(x=90, y=68,height=20,width=120) tk.Label(root, text="身份证号:",font=("微软雅黑 -20")).place(x=10, y=100) id_input=tk.StringVar() frame_id_input=tk.Entry(root, textvariable=id_input) frame_id_input.place(x=110, y=108,height=20,width=140) tk.Label(root, text="邮箱:",font=("微软雅黑 -20")).place(x=10, y=140) id_input=tk.StringVar() frame_youxiang_input=tk.Entry(root, textvariable=id_input) frame_youxiang_input.place(x=75, y=148,height=20,width=120) tk.Label(root, text="出生日期:",font=("微软雅黑 -20")).place(x=10, y=180) id_input=tk.StringVar() frame_date_input=tk.Entry(root, textvariable=id_input) frame_date_input.place(x=110, y=188,height=20,width=120) btn1 = tk.Button(root, text="替换", font=("微软雅黑 -20"),bg='pink',command=lambda: tihuan(frame_phone_input.get(), frame_id_input.get(), root)) btn1.place(x=10, y=250) def tihuan(phone_input,id_input,root): # 替换手机号和身份证号码的函数 def replace_sensitive_info(match): sensitive_info = match.group(0) if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号 return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:] elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号 return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:] else: return sensitive_info # 数据脱敏函数 def desensitize_data(data): pattern = re.compile(r'1\d{10}|\d{17}[\dXx]') # 替换所有匹配的敏感信息 desensitized_data = re.sub(pattern, replace_sensitive_info, data) return desensitized_data # 测试数据脱敏函数 data =frame_phone_input+frame_id_input desensitized_data = desensitize_data(data) a1=tk.Label(root,text=("手机号:",desensitized_data(data)),font=("微软雅黑 -20")) a1.place(x=10,y=300)报错name 'frame_phone_input' is not defined怎么改
在函数`tihuan(phone_input,id_input,root)`中,你使用了`frame_phone_input`和`frame_id_input`这两个变量,但是这两个变量并没有在函数内部定义,因此报错`name 'frame_phone_input' is not defined`。你需要在函数内部重新定义这两个变量,方法可以参考下面的代码:
```python
def tihuan(phone_input, id_input, root):
# 替换手机号和身份证号码的函数
def replace_sensitive_info(match):
sensitive_info = match.group(0)
if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号
return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:]
elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号
return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:]
else:
return sensitive_info
# 数据脱敏函数
def desensitize_data(phone_input, id_input):
data = phone_input + id_input
pattern = re.compile(r'1\d{10}|\d{17}[\dXx]')
# 替换所有匹配的敏感信息
desensitized_data = re.sub(pattern, replace_sensitive_info, data)
return desensitized_data
# 测试数据脱敏函数
data = desensitize_data(phone_input.get(), id_input.get())
a1 = tk.Label(root, text=("手机号和身份证号:", data), font=("微软雅黑 -20"))
a1.place(x=10, y=300)
```
你需要把`frame_phone_input`替换为`phone_input`,把`frame_id_input`替换为`id_input`,并且将这两个变量传递给函数`desensitize_data()`来处理。
def choose(): window=tk.Tk() window.title("菜单") window.geometry("1000x750") tk.Label(window, text="数据脱敏系统", font=("微软雅黑 -30"),activebackground='pink').place(x=400, y=20) tk.Label(window, text="(请选择)", font=("黑体", 14)).place(x=450, y=60) table_2=tk.Button(window, text="对表格中数据进行脱敏", font=("微软雅黑 -30"),bg='pink',command=table2) table_2.place(x=100, y=330)def table2(): root = tk.Tk()# 这是主窗口,也就是所说的初始界面 window = tk.Toplevel() root.title("欢迎使用本系统") # 窗口名 root.geometry("1000x750") # 窗口大小 # 手机号、身份证号、年龄、出生日期 data = [ {"手机号": "18845298308", "身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]def desensitize_data(): pattern = re.compile(r'1\d{10}|\d{17}[\dXx]') new_data = data.copy() for i in range(len(data)): for key in data[i]: if isinstance(data[i][key], str): new_data[i][key] = re.sub(pattern, replace_sensitive_info, data[i][key]) return new_data def replace_sensitive_info(match): sensitive_info = match.group(0) if re.match(r'^1\d{10}$', sensitive_info): # 匹配手机号 return sensitive_info[0:3] + 'aaaa' + sensitive_info[7:] elif re.match(r'^\d{17}[\dXx]$', sensitive_info): # 匹配身份证号 return sensitive_info[0:8] + 'aaaaaaaa' + sensitive_info[16:] else: return sensitive_info def replace_mask(): global data data = desensitize_data() show_data() def show_original_data(): global data data = [ {"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"}, {"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}]show_data() replace_mask_btn = Button(root, text="替换脱敏", font=("微软雅黑 -20"),bg='pink',command=replace_mask) replace_mask_btn.place(x=600,y=20) replace_unmask_btn = Button(root, text="还原", font=("微软雅黑 -20"),bg='pink', command=show_original_data) replace_unmask_btn.place(x=180,y=420)点击还原按钮没有反应代码应该怎么改
在 `show_original_data()` 函数中,需要加上显示数据的语句,可以使用类似于 `show_data()` 函数的方式实现。具体来说,可以在 `show_original_data()` 函数中添加以下代码:
```python
def show_original_data():
global data
data = [
{"手机号": "18845298308","身份证号": "110101199001011234", "年龄": 31, "出生日期": "1990-01-01"},
{"手机号": "13836277378", "身份证号": "110101199002022345", "年龄": 20, "出生日期": "2002-10-25"}
]
show_data() # 添加这行代码
```
这样就可以在点击还原按钮时显示原始数据了。
阅读全文