Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将十六进制字符串与列表标记匹配_Python_String_Hex - Fatal编程技术网

Python 将十六进制字符串与列表标记匹配

Python 将十六进制字符串与列表标记匹配,python,string,hex,Python,String,Hex,我正在建立一个去识别工具。它用其他名称替换所有名称 我们接到报告说彼得昨天遇见了简。彼得很可疑 输出: 我们接到报告说比利昨天见到了艾尔莎。比利很可疑 它可以在多个文档上完成,并且一个名称总是被同一个对应项替换,因此您仍然可以理解文本所指的是谁。但是,所有文档都有一个ID,指的是该文件涉及的人(我在公共服务部门处理文件),只有具有相同ID的文档才会以相同的方式取消标识,并使用相同的名称。(目的是观察进化和人类历史)这是一种安全措施,比如当我将工具交给第三方时,我不会将自己文档的密钥与之一起交给第

我正在建立一个去识别工具。它用其他名称替换所有名称

我们接到报告说彼得昨天遇见了简。彼得很可疑

输出:

我们接到报告说比利昨天见到了艾尔莎。比利很可疑

它可以在多个文档上完成,并且一个名称总是被同一个对应项替换,因此您仍然可以理解文本所指的是谁。但是,所有文档都有一个ID,指的是该文件涉及的人(我在公共服务部门处理文件),只有具有相同ID的文档才会以相同的方式取消标识,并使用相同的名称。(目的是观察进化和人类历史)这是一种安全措施,比如当我将工具交给第三方时,我不会将自己文档的密钥与之一起交给第三方

因此,相同的输入,使用不同的ID,产生:

我们接到报告说亨利昨天遇到了艾丽西亚。亨利很可疑

现在,我用文档ID作为salt对每个名称进行散列,我将散列转换为一个整数,然后减去名称列表的长度,直到我可以请求一个以该整数作为标记的名称。但我觉得应该有一个更快/更直接的方法

这实际上更多的是一个算法问题,但如果它与我使用的Python2.7有任何关联,请在需要时请求更多解释。谢谢大家!



我希望这样会更清楚ô对不起,当你深陷于代码中时,你忘记了其他人需要一个更大的图景来理解你是如何做到的。

正如@LutzHorn所指出的,你可以使用
dict
将真名映射到假名

你也可以做一些类似的事情:

existing_names =  []
for nameocurrence in original_text:
    if not nameoccurence.name in existing_names:
        nameoccurence.id = len(existing_names)
        existing_names.append(nameoccurence.name)
    else:
        nameoccurence.id = existing_names.index(nameoccurence.name)

for idx, _ in enumerate(existing_names):
    existing_names[idx] = gimme_random_name()

试着用名字字典

import re

names = {"Peter": "Billy", "Jane": "Elsa"}

for name in re.findall("<name>([a-zA-Z]+)</name>", s):
    s = re.sub("<name>" + name + "</name>", "<name>"+ names[name] + "</name>", s)
print(s)
重新导入
姓名={“彼得”:“比利”、“简”:“艾尔莎”}
对于re.findall(([a-zA-Z]+)”中的名称,s:
s=re.sub(“+name+”,“+names[name]+”,s)
印刷品
输出:

'We got a report that <name>Billy</name> met <name>Elsa</name> yesterday. <name>Billy</name> is suspicious.'
“我们接到报告说比利昨天遇到了艾尔莎。比利很可疑

为什么要将名称散列?使用字典
{“Peter”:“Billy”,“Jane”:“Elsa”}
。实际上,
dict
在内部使用哈希来精确地实现这一点。所以@LutzHorn的答案是最好的:建立一个目录。@LutzHorn出于安全考虑,我正在建立一个工具,而不仅仅是一次性使用一堆文件。我真的不明白你的问题。@LutzHorn我现在明白为什么不清楚了,抱歉。编辑。一个文档集合的名称应相同,不同集合的名称应不同。这样,第三方就可以取消识别自己的文档,而不必拥有我自己文档的密钥。在此之前,我用集合ID为哈希加盐。谢谢你的建议,编辑了我的问题。出于基本的安全原因,我正在使用哈希,我正在构建一个去识别工具,该工具将在某个时候开放供使用和审查。