我想打印从文件/tmp/values.txt读取的每行的加密版本。有人能帮我解释一下逻辑吗?下面是我的代码:
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
我不确定文件中的行是否以两个空格开始,或者这只是错误,所以我使用strip()
而不是rstrip()
,现在(正确缩进)它适用于我。
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))
为了测试,我使用string代替file:
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))
经过一些小修改,我得到:
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))
结果:Alexander Pushkin 1799
William Shakespeare 1564
Lewis Carroll 1832