解密字符串中的alphas

时间:2013-09-13 23:19:46

标签: python-3.x

我想通过将每个字母递增两个alpha位置来解密一个字符串,即'a'成为'c'。我已经使用chrord作为增量,但无法解决如何跳过字符串中的特殊字符,例如空格和括号。

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")

2 个答案:

答案 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)