我要做的是制作一个程序,使用字母A-Z加密文本文件(您指定的文件),然后将其保存在另一个文件中。
例如,使文本文件中的第一个字母为“A”,第二个字母为“B”,第三个字母为“C”等。
我想知道是否有人可以帮助我,或者至少给我一些如何开始的提示。
答案 0 :(得分:3)
如果我从字面上理解你,就会这样做:
from itertools import cycle
import string
with open('input.txt', 'rt') as input, open('output.txt', 'wt') as output:
cipher = cycle(string.uppercase)
for line in input:
encrypted = []
for c in line:
if c in string.letters:
encrypted.append(cipher.next())
else:
encrypted.append(c)
output.write(''.join(encrypted))
输入文件:
This is a sentence.
And so is this.
输出文件:
ABCD EF G HIJKLMNO.
PQR ST UV WXYZ.
这个问题是我认为没有一种实用的方法可以对文本进行解密,因为在这个过程中信息会有重大损失 - 字母的加密版本仅取决于它在文本中的相对位置。文件,而不是最初的内容。
答案 1 :(得分:0)
我有一个刺:
from string import ascii_uppercase
from itertools import count
from operator import itemgetter
text = 'hellothere'
counter = count(0)
ref = {}
for ch in text:
if ch not in ref:
ref[ch] = next(counter)
letters = ''.join(el[0] for el in sorted(ref.iteritems(), key=itemgetter(1)))
frm, to = zip(*zip(letters, ascii_uppercase))
from string import maketrans
trans = maketrans(''.join(frm), ''.join(to))
print text.translate(trans)
# ABCCDEABFB