常用的地址脱敏实现效果包括:
-
隐藏部分信息:将地址中的敏感信息部分替换为特定字符,如将具体门牌号替换为"*"或"X"等。
-
省略部分信息:将地址中的敏感信息部分省略,只显示一部分信息,如只显示省份和城市,而不显示具体街道和门牌号。
-
完全脱敏:将整个地址都替换为特定的符号或字符。例如,将整个地址替换为"***"或者随机生成的字符串。这种方法可以完全隐藏地址的内容,但可能会导致地址无法识别。
-
加密处理:对地址进行加密处理,将敏感信息转换为不可读的密文,只有授权的人才能解密还原。
-
哈希脱敏:使用哈希算法对地址进行处理,将地址转换为一串固定长度的哈希值。这种方法可以保证地址的一致性和唯一性,但无法还原出原始地址。
-
脱敏编码:使用特定的编码算法对地址进行脱敏处理,将敏感信息转换为一串无意义的编码,只有授权的人才能还原。
-
生成虚拟地址:根据原始地址生成一个虚拟地址,与真实地址无关,保护真实地址的隐私。
省略信息
import pandas as pd
import re
def truncate_address(address):
pattern = r'(.+省)?(.+市)?(.+自治区)?(.+行政区)?.+'
match = re.match(pattern, str(address)) #这里正则匹配的是字符串,但是获得的数据是类型为bytes,类型不符合报错,要将传入的参数转化为string类型
if match:
province = match.group(1)
city = match.group(2)
region = match.group(3)
administ_region = match.group(4)
if province and city:
return province + city
elif province:
return province
elif region and city:
return region + city
elif region:
return region
elif administ_region:
return administ_region
elif city:
return city
return address
df = pd.read_csv('addresses.csv', encoding="utf-8",sep=',')
print(df.head())
address_list = df['Address']
# 遍历替换 调用函数
for i in range(len(address_list)):
add = address_list[i]
truncated_address = truncate_address(add)
#print(truncated_address)
address_list[i] = truncated_address
print(df)
# 保存文件
#df.to_excel('wuli.xlsx', index=False)
#df.to_csv('outputs.csv', index=False)
隐藏具体门牌号
s = "北京市朝阳区发和小区1号楼2单元303室"
print(re.sub(r'[0-9]', 'X', s)) #匹配单一数字
print(re.sub(r'[0-9]+', 'X', s)) #匹配多个数字
s1 = '浙江省郑州市西峰江路b座 878237'
print(re.sub(r'[0-9A-Za-z]', 'X', s1)) #匹配数字与字母
'''
北京市朝阳区发和小区X号楼X单元XXX室
北京市朝阳区发和小区X号楼X单元X室
浙江省郑州市西峰江路X座 XXXXXX
'''