我想通过将每个字母递增两个alpha位置来解密一个字符串,即'a'成为'c'。我已经使用chr
和ord
作为增量,但无法解决如何跳过字符串中的特殊字符,例如空格和括号。
from sys import stdout
from time import sleep
encodedString = 'g fmnc wms'
stringLength = len(encodedString)
for i in range(0, stringLength):
if encodedString[i].isalpha():
decodedString = chr(ord(encodedString[i]) + 2)
stdout.write("\r%s" % decodedString)
stdout.flush()
sleep(0.1)
stdout.write("\n")
答案 0 :(得分:1)
您可能希望查看不同的方法,从而产生更简单的代码:使用正则表达式捕获所有字母并替换它们。像这样:
import re
encodedString = 'g fmnc wms'
def decodeLetter(match):
letter = match.group(0)[0]
if letter in 'YZyz':
return chr(ord(letter) - 24)
else:
return chr(ord(letter) + 2)
print(re.sub('[a-zA-Z]', decodeLetter, encodedString))
希望这有帮助!
答案 1 :(得分:1)
只是为了踢,这是另一种方法:
encodedString = 'g fmnc wms'
alphabet = 'abcdefghijklmnopqrstuvwxyz'
capalphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'
decodedString = ""
for i in range(len(encodedString)):
if encodedString[i] in alphabet:
decodedString += alphabet[i+2]
elif encodedString[i] in capalphabet:
decodedString += alphabet[i+2]
else:
decodedString += encodedString[i]
print(decodedString)