Ich möchte die verschlüsselte Version jeder aus der Datei /tmp/values.txt gelesenen Zeile drucken . Kann mir bitte jemand bei der Logik helfen? Unten ist mein Code:
with open ('/tmp/values.txt') as f:
sentence = f.readlines()
for sent in sentence:
crypt,key = [ x for x in sent.rstrip().split('|')]
key = key.strip().split(' ')
key = list(map(int , key))
new_keys = [ (x-1) for x in key]
op = [crypt[new_keys[keys]] for keys in range(0,len(new_keys))]
print (''.join(op))
/tmp/values.txt:
Ta1HN9UPlxLfsYzEIAR4GcJQvh5biMW7oun0S8Keq6tDZmkVjX3FgB2yCwrOd p| 18 9 40 10 2 35 61 40 59 62 8 34 13 26 47 29 35 62 3 32 6 6
7NZq8pegmhAnBKH4VrGQdbPFw35jaUCzOS10oyLiv6IMXJW2 ksDRTfucElYxt9| 47 40 59 59 40 29 9 49 34 10 29 50 7 51 6 7 29 18 7 49 35 27 42 16
6qcAdESB7tlep9suiyOv8zXFg24TkaZxKLbhRUMjC3GHrI5o 10QPmVJfYWDNnw| 34 12 63 17 15 49 41 30 45 45 48 11 11 49 50 21 42 26
Ich war mir nicht sicher, ob Zeilen in der Datei mit zwei Leerzeichen beginnen oder es ist nur ein Fehler, also habe ich strip()
stattdessen verwendet rstrip()
und jetzt (mit korrekten Einrückungen) funktioniert es für mich.
with open ('/tmp/values.txt') as f:
sentence = f.readlines()
for sent in sentence:
crypt,key = [ x for x in sent.rstrip().split('|')]
key = key.strip().split(' ')
key = list(map(int , key))
new_keys = [ (x-1) for x in key]
op = [crypt[new_keys[keys]] for keys in range(0,len(new_keys))]
print (''.join(op))
Zum Test habe ich diese Version mit String anstelle von Datei erstellt:
data = ''' Ta1HN9UPlxLfsYzEIAR4GcJQvh5biMW7oun0S8Keq6tDZmkVjX3FgB2yCwrOd p| 18 9 40 10 2 35 61 40 59 62 8 34 13 26 47 29 35 62 3 32 6 6
7NZq8pegmhAnBKH4VrGQdbPFw35jaUCzOS10oyLiv6IMXJW2 ksDRTfucElYxt9| 47 40 59 59 40 29 9 49 34 10 29 50 7 51 6 7 29 18 7 49 35 27 42 16
6qcAdESB7tlep9suiyOv8zXFg24TkaZxKLbhRUMjC3GHrI5o 10QPmVJfYWDNnw| 34 12 63 17 15 49 41 30 45 45 48 11 11 49 50 21 42 26'''
for sent in data.split('\n'):
crypt,key = [ x for x in sent.strip().split('|')]
key = key.strip().split(' ')
key = list(map(int , key))
new_keys = [ (x-1) for x in key]
op = [crypt[new_keys[keys]] for keys in range(0,len(new_keys))]
print (''.join(op))
Nach einigen kleinen Änderungen bekomme ich:
data = ''' Ta1HN9UPlxLfsYzEIAR4GcJQvh5biMW7oun0S8Keq6tDZmkVjX3FgB2yCwrOd p| 18 9 40 10 2 35 61 40 59 62 8 34 13 26 47 29 35 62 3 32 6 6
7NZq8pegmhAnBKH4VrGQdbPFw35jaUCzOS10oyLiv6IMXJW2 ksDRTfucElYxt9| 47 40 59 59 40 29 9 49 34 10 29 50 7 51 6 7 29 18 7 49 35 27 42 16
6qcAdESB7tlep9suiyOv8zXFg24TkaZxKLbhRUMjC3GHrI5o 10QPmVJfYWDNnw| 34 12 63 17 15 49 41 30 45 45 48 11 11 49 50 21 42 26'''
for sent in data.split('\n'):
crypt, keys = sent.strip().split('|')
keys = keys.strip().split(' ')
keys = [int(x)-1 for x in keys]
op = [crypt[x] for x in keys]
print(''.join(op))
Ergebnis:
Alexander Pushkin 1799
William Shakespeare 1564
Lewis Carroll 1832
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen