Схема кодирования состоит в том, чтобы вычесть 2 из значения ASCII каждого символа - PullRequest
1 голос
/ 17 октября 2019

В основном у меня есть файл, который мне нужно декодировать. Я новичок в кодировании и не совсем уверен, как это сделать.

На данный момент у меня есть этот код:

infile = open('encoded_2.txt')

for line in infile:
    line = line.strip()
    print(line,end=' ')

Я получаю это:

Ml rfc rp_gj rm Mpceml

Но я ожидаю, что это будет:

On the trail to Oregon

Ответы [ 2 ]

0 голосов
/ 17 октября 2019

Это работает для меня:

>>> text = 'Ml rfc rp_gj rm Mpceml'
>>> ''.join(chr(ord(t)+2) if t != ' ' else t for t in text)
'On the trail to Oregon'
>>> 
0 голосов
/ 17 октября 2019

Можно использовать функции ord (для преобразования символа в число ASCII) и chr (для преобразования числа ASCII в символ):

line = "Ml rfc rp_gj rm Mpceml"
newline =""
for i in range(len(line)):
    newline += chr(ord(line[i])+2)
print(newline)

Вывод:

On"the"trail"to"Oregon

Пробел также преобразуется.

Видимо, пробел не закодирован в исходном файле. Таким образом, его можно исключить из декодирования:

line = "Ml rfc rp_gj rm Mpceml"
newline =""
for i in range(len(line)):
    if line[i] == ' ':
        newline += ' '
    else: 
        newline += chr(ord(line[i])+2)
print(newline)

Вывод:

On the trail to Oregon

Условие if можно поместить в одну строку:

for i in range(len(line)):
    newline += ' ' if line[i] == ' ' else chr(ord(line[i])+2)
...