re_t pattern = re_compile("\\S+ \\S+ \\S+ TK300-\\S+");
时间: 2023-11-24 18:05:56 浏览: 33
这是一个正则表达式的模式,用于匹配特定的字符串格式。该模式可以匹配以空格分隔的四个部分的字符串,其中第三个部分以"TK300-"开头。下面是一个示例代码,演示如何使用该模式进行匹配:
```python
import re
pattern = re.compile("\\S+ \\S+ \\S+ TK300-\\S+")
string = "abc def ghi TK300-123"
match = pattern.match(string)
if match:
print("匹配成功")
else:
print("匹配失败")
```
输出结果为:"匹配成功",因为字符串"abc def ghi TK300-123"符合模式的要求。
相关问题
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)怎么改代码能让手机号和身份证号分两行显示
你可以在 Label 中使用 `\n` 换行符,将加密后的手机号和身份证号显示在两行,代码如下:
```
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)
# 在窗口上分别显示加密后的手机号和身份证号,每个信息占一行
desensitized_info = data.split(' ')
phone_label = tk.Label(root, text=("加密后的手机号:\n" + desensitized_info[0]), font=("微软雅黑 -20"))
phone_label.place(x=10, y=300)
id_label = tk.Label(root, text=("加密后的身份证号:\n" + desensitized_info[1]), font=("微软雅黑 -20"))
id_label.place(x=10, y=350)
```
这样,加密后的手机号和身份证号就会显示在窗口的两个 Label 上,每个信息占一行。
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(phone_input.get(),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(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)报错 'str' object has no attribute 'get'怎么改
这个错误是由于在函数`tihuan`中的`phone_input`和`id_input`两个参数被传入了字符串而不是`Entry`对象,所以不存在`get()`方法。要解决这个问题,你需要将这两个`Entry`对象传入`tihuan`函数,而不是它们的值。具体的改动如下:
1. 在按钮`btn1`的`command`中,将`phone_input`和`id_input`改为`frame_phone_input`和`frame_id_input`,即:
```
btn1 = tk.Button(root, text="替换", font=("微软雅黑 -20"),bg='pink',command=lambda: tihuan(frame_phone_input, frame_id_input, root))
```
2. 在函数`tihuan`中,将`phone_input`和`id_input`参数改为`frame_phone_input`和`frame_id_input`,并在函数内部使用它们的`get()`方法获取它们的值,即:
```
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)
```
这样修改之后,就可以正常运行了。