Я довольно новичок в python, так что простите, если это длинное объяснение простой проблемы.Мне нужна помощь в понимании того, как использовать словарь для поиска совпадений из списка CSV, а затем распечатать ключ в выводе типа отчета.
Цель: У меня есть список открытых данных о конфиденциальности, таких как номера социального страхования.Мне нужно сравнить хэш этого открытого текста и в то же время скрыть открытый текст с последними 4 цифрами (XXX-XX-1245).Если совпадение моего хэша в виде открытого текста совпадает с хэшем, который у меня уже был в поиске CSV, я делаю мини-отчет, в котором содержится демографическая информация о том, кому может принадлежать найденный хеш.Кроме того, поскольку нет ничего легкого, в мини-отчете необходимо напечатать скрытое значение SPI.
вывод должен выглядеть следующим образом, если хэш, который я только что сгенерировал, соответствует хэшу столбца 2 в моей электронной таблице:
user@gmail.com Full Name Another Full Name xxx-xx-1234 location1 location2
Задача :Все хеширование, запутывание и сопоставление выполняется и сохраняется в списках и работает правильно.Мне нужна помощь, чтобы выяснить, как напечатать ключ из словаря с другими моими столбцами ниже, не печатая весь набор каждый раз в цикле for.
Это работает за пределами моего читателя:
for i in hashes_ssnxxxx:
print(i)
, но я не знаю, как принять это значение и вставить его в свое утверждение для печати внутри читателя.
clear_text_hash = [] #Where Hash of clear text value found is stored
obfuscate_xxxxssn = [] #Where obfuscated SPI found by using re.sub is stored
#Zip them in a dictonary to keep the two related
hashes_and_ssnxxxx = dict(zip(obfuscate_xxxxssn,clear_text_hash))
book_of_record = open('path\to\bookofrecord.csv', 'rt', encoding='UTF-8')
a1 = csv.reader(book_of_record, delimiter=',')
for row in a1:
hashes = row[2]
if hashes in hashes_ssnxxxx.values():
print(row[16], row[6], hashes_ssnxxxx.keys(), row[13], row[35], row[18], row[43])
ОБНОВЛЕНИЕ [решено] с использованием понимания списка, предложенного @tianhua liao, все, что ему было нужно:
if hashes in hashes_ssnxxxx.values():
obfuscate = [k for k,v in hashes_ssnxxxx.items() if hashes == v]
print(row[16], obfuscate, row[6], row[13], row[35], row[18], row[43])