3 回答

TA贡献1868条经验 获得超4个赞
如果我没听错,你想用 m 替换 q,用 n 替换 w 等等。尝试以下
import os, sys, random
dig = 0
text_encoded = ""
text = ""
try:
if os.path.isfile(sys.argv[1]) == True:
with open(sys.argv[1], "r") as text:
text = text.readlines()
except:
pass
if text == "":
print("Write the text to encode")
text = input()
mychars=list("qwertyuiopasdfghjklzxcvbnm ")
myencode=list("mnbvcxzlkjhgfdsapoiuytrewq@")
charmap=zip(mychars,myencode)
_map = dict(charmap)
encoded_text = ''.join(_map.get(c) for c in text)
print("Your encoded text is:\n"+encoded_text)
您问题中的字符串提到您想用@替换''。如果您不想这样做,只需从上述两个字符串中删除最后一个字符。

TA贡献1995条经验 获得超2个赞
或者你可以使用str.translate
import os, sys, random
from pathlib import Path
TEXT_MAP = ("qwertyuiopasdfghjklzxcvbnm ", "mnbvcxzlkjhgfdsapoiuytrewq@")
def main():
text = ''
if len(sys.argv) > 1:
fname = sys.argv[1]
p = Path(fname)
if p.is_file():
text = p.read_text().strip()
print(f'Text from {p} is: {text}')
if not text:
text = input("Write the text to encode: ").strip()
trantab = str.maketrans(*TEXT_MAP)
text_encoded = text.translate(trantab)
print("Your encoded text is:\n"+text_encoded)
if __name__ == '__main__':
main()

TA贡献1719条经验 获得超6个赞
有两个列表而不是字符串,例如 from_ = "abc".split() 和 to_ = "def".split() 在 from_ 中查找您的字符并获取索引,从 to_ 获取相同的索引字符并将其拼接到一个新的句子。
example:
from_ = "abc".split()
to_ = "def".split()
old_msg = "ab ab"
new_msg = ""
for each in old_msg.split():
new_msg = new_msg + to_[from_.index(each)]
希望这会有所帮助,请添加缺少的字符处理和任何其他边缘情况
添加回答
举报