>

공개적으로 공개해야하지만 원래 이름을 볼 수없는 문자열로 이름이 포함 된 데이터 세트로 작업하고 있습니다 (즉, 다른 이름을 구별 할 수 있어야하지만 최종 결과는 다음과 같아야합니다) 원래 데이터 세트에 "John Doe"가있는 "e7fx8yuo")

이 방법에 대한 요구 사항은 해싱 프로세스와 비슷하지만 요구 사항이 적습니다 (즉, 단일 길이 해시에 매핑하기 위해 가변 길이 이름이 필요하지 않음). 그러나 이름은 고유 한 문자열 (두 가지 다른 이름)에 매핑해야합니다 이름은 같은 문자열로 매핑 될 수 없습니다.)

나는 파이썬으로 이것을 작성할 계획이지만, 구현하고자하는 프로세스가 정확히 무엇인지 확실하지 않습니다. 가능하다면 '해시 된'최종 제품 문자열이 github이 저장소 이름 제안 ( "e7fx8yuo"대신 "reimagined-memory")을 생성하는 방식과 유사하게 작동하기를 원합니다. 완전한 단어의 문자열이 기억하기 쉽고 기억하기 쉽기 때문입니다. ). 파이썬에서 나를 위해 이것을 할 수있는 모듈이 있습니까?

  • 답변 # 1

    의견에서 언급했듯이, 이것은 데이터 마스킹처럼 들립니다. 기본 구현은 다음과 같습니다.

    from collections import defaultdict
    from string import ascii_lowercase
    from random import choice
    random_strings = set()
    def random_string():
        while True:
            result = ''.join(choice(ascii_lowercase) for _ in range(8))
            if result not in random_strings:
                random_strings.add(result)
                return result
    masks = defaultdict(random_string)
    print(masks['Adam'])
    print(masks['Adam'])
    print(masks['Bob'])
    
    

    출력 :

    qmmwavuk
    qmmwavuk
    ykzlvfaf
    
    

  • 답변 # 2

    빠르고 더러운 일이 있습니다

    문자열 가져 오기
    무작위 가져 오기
    데프 id_generator (크기 = 6, 문자 = string.ascii_uppercase + string.digits) :
        return ''.join (random.choice (chars) for _ in range (size)) #이 함수에 인수가 전달되지 않으면 문자와 숫자로 구성된 6 문자열을 반환합니다.
    데프 makeID (이름) :
        nameDict = {}
        나는 이름으로 :
            var = id_generator ()
            while var in nameDict : # 발생기 결과가 이미 키로 존재하는 경우 고유 한 결과를 얻을 때까지 반복합니다.
                var = id_generator ()
            nameDict [var] = i # 여기서 키를 생성기 결과로 설정하고 값을 목록에서 현재 이름으로 설정합니다 (이 경우 'i').
        print (nameDict,)
    makeID ([ 'John Doe', '제인 노도', 'Getsum MoDoe'])
    

    출력 :

    { 'H8WIAP': 'John Doe', '4NT7JC': 'Jane NoDoe', '208DBM': 'Getsum MoDoe'}
    

    무작위 생성기는 파이썬에서 대문자와 숫자를 사용하는 임의 문자열 생성에서 나왔습니다

  • 이전 azure - arm 템플릿 - alertrules :미 공급
  • 다음 maven - 다중 파티션으로 zookeeper 실행 kafka - 자바