【问题标题】:Encoding issues with regards to non-alphabet characters关于非字母字符的编码问题
【发布时间】:2020-12-24 05:30:12
【问题描述】:

我正在尝试创建一个编码函数,该函数将接受诸如“你好!”之类的输入。并生成加密响应,例如“8.5.12.12.15.999”。我在非字母项目上苦苦挣扎,例如当我输入感叹号时,由于无法使用“.lower”方法而收到错误消息。我也无法用“999”替换非字母字符。任何帮助将不胜感激。

import string

def encode(saying):
    saying = saying.lower()
    if type(saying) != str:
        return print("Enter a string")
    else:
        Dict = dict(zip(string.ascii_lowercase,range(1,27)))
        encode_list = []
        for item in saying:
            encode_list.append(Dict[item])
        output = ".".join(map(str,encode_list))
        return print(output)
    encode("Hello")

【问题讨论】:

  • 看看 ROT-47 作为一个想法来覆盖可打印的 ASCII 字符!到~。您可以扩展程序所涵盖的字符范围。

标签: python dictionary encryption


【解决方案1】:

您可以在输入过程中在开头即isalpha()isdigit()进行简单检查,以检查字符串的字符是否有任何特殊字符(任何不是字母或数字的字符都是特殊字符) .一旦找到,用新字符串中的 999 替换它(你不能用相同的字符串替换它,因为字符串在 python 中是不可变的)

您也可以import re 并定义一组特殊字符,即regex = re.compile('[@_!#$%^&*()<>?/\|}{~:]'),并使用regex.search(string_name) 检查特殊字符,但不建议这样做,因为可能存在一些边缘情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-24
    相关资源
    最近更新 更多