python - 找不到根据键翻译字符串的简单方法

标签 python list python-3.x indexing

基本上我有一个函数可以非常简单地加密消息。

def encrypt(message):
    alphabet = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"]
    key = ["4","x","z","@","%","b","j","q","(","ƒ","¥","µ","˚","nå","ø","π","å","œ","¢","∞","∫","µ","≈","`","¬","…"]
    new_message = ""
    for x in range(0,len(message)):
        new_message = message.replace(message[x],key.index[alphabet.index(message[x])])
    return new_message

print(encrypt(input("What would you like to encrypt").lower()))

这应该取字母并将其替换为列表键中具有相同索引的字符,但是我收到错误:

TypeError: 'builtin_function_or_method' object is not subscriptable

最佳答案

最后是 str.translate 的用例!

def encrypt(message):
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    key = '4xz@%bjq(ƒ¥µ˚nåøπ圢∞∫µ≈`¬'
    table = str.maketrans(alphabet, key)

    return message.translate(table)

print(encrypt('asdsaewqeq')) # 4œ@œ4%µπ%π

请注意,您在 key 中的一个条目由两个字符组成。如果这是有意的并且您想用两个字符替换单个字符,那么您可以手动创建翻译表。

table = dict(zip(map(ord, alphabet), key))

关于python - 找不到根据键翻译字符串的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44766703/

相关文章:

python - 您是否主要将Python用于其功能性或面向对象的功能?

python - 如何比较 python 中两个列表的值?

python - Redis 可以写出到像 PostgreSQL 这样的数据库吗?

python - 根据函数的输入交错列表

python-3.x - 对多索引 pandas 数据框进行排序

python - openpyxl:无需迭代即可将值或格式应用于一系列 Excel 单元格

performance - 当它们应该是相同的东西时,为什么 >>= 比 concatMap 快?

java - 如何为 List 创建一个 ConstraintValidator

python - 删除列表中字符串中的日期和年份重复项

python - 在 Python 3 Pythonic 中使用 map(...) (与循环相比)