2015-01-07 2 views
-1

i вывел текстовый файл на основе ввода пользователем из файла csv в определенном формате (с помощью предложений пользователя). Теперь я хочу хэшировать только значение справа от знака «=» и выводить новый текстовый файл с таким же форматом, но хешированные значения вправо. вот код предложил мне с некоторыми из моих модов, который работал на 1-й части:Как хэш только значение справа от знака «=» (или любого другого разделителя) и вывод нового текстового файла

import csv 
 

 
device = input("Enter the device name: ").upper() 
 

 
output_file = 'C:\path_to_scripts\{}_items.txt'.format(device) 
 

 
with open(r'C:\path_to_script\filename_Brief.csv') as infh, \ 
 
    open(output_file, 'wt') as outfh: 
 
    reader = csv.DictReader(infh) 
 
    for row in reader: 
 
     if row['ALIAS'] == device: 
 
      outfh.write('Full_Name = {Full_Name}\n' 
 
         'PHONE_NO = {PHONE_NO}\n' 
 
         'ALIAS = {ALIAS}\n'.format(**row))

Я могу хаш всю строку, используя такой код:

import hashlib 

with open(outfh, 'r') as file: 

    lines = [x.strip('\n') for x in file.readlines()] 
    hashfile = 'C:\path_to_scripts\{}_hashed.csv'.format(device) 
    with open(hash_file,'w') as save_file: 


     # Write the saved file header 
     header = '\"Value\",\"Algorithm\",\"Hash\"\n' 
     save_file.write(header) 

     # For each line in file 
     for line in lines: 
      # Create a list of all the available algorithms 
      algorithms = ['md5','sha1','sha224','sha256','sha384','sha512'] 

      # For each algorithm 
      for algo in algorithms: 

       # Encode the original value as utf8 
       val_enc = line.encode('utf-8') 

       # Create the hashing object using the current algorithm 
       hashed = hashlib.new(algo) 

       # Set the value we want the hash of 
       hashed.update(val_enc) 

       # Get the hash 
       hash_digest = hashed.hexdigest() 


       results = '\"{}\",\"{}\",\"{}\"\n'.format(line, algo, hash_digest) 
       save_file.write(results) 

но не может понять, как разделить линию - например, «Full_Name = Jack Flash», чтобы получить только «Jack Flash» в качестве объекта, который нужно хэшировать, хеш «Jack Flash» и записать значения в новый текстовый файл с форматом ключа = хешированное значение. Вышеприведенный код сохраняет файл csv. Я режу и вставляю соответствующие разделы, поэтому надеюсь, что это имеет смысл. Любые идеи о том, как это сделать? заранее спасибо!

ответ

0

Что вы ищете str.split ('=')

>>> line = "Full_Name = Jack Flash" 
>>> parts = line.split('=') 
>>> parts 
['Full_Name ', ' Jack Flash'] 
>>> parts[1] 
' Jack Flash' 

Если вы не хотите, начальная '' хэшируются, удалите его. Или, если '=' всегда *, а затем '', .split ('=').