Добавлять и заменять объекты в одну строку - PullRequest
1 голос
/ 22 сентября 2019

Я пишу кодировщик текста / шифратор (все сам) и не могу понять, как добавлять и заменять символы в строке: - /
Код:

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

text = text.split()

for _ in range(len(text)):
    text_encoded = text[dig].replace("qwertyuiopasdfghjklzxcvbnm ", "mnbvcxzlkjhgfdsapoiuytrewq@")
    dig = dig+1

print("Your encoded text is:\n"+text_encoded)

Вот некоторые выводы:

Write the text to encode
lo lolo lol lol
Your encoded text is:
lol

Если вы можете мне чем-нибудь помочь, спасибо: -)

Ответы [ 3 ]

0 голосов
/ 22 сентября 2019

Если я вас правильно понял, вы хотите заменить q на m, w на n и так далее.Попробуйте следующее:

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)

В строках вашего вопроса упоминается, что вы хотите заменить '' на @.Если вы не хотите этого делать, просто удалите последние символы из обеих приведенных выше строк.

0 голосов
/ 22 сентября 2019

Или вы можете использовать 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()
0 голосов
/ 22 сентября 2019

имеют два списка вместо строк, таких как 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)]

Надеюсь, это поможет, добавьте обработку отсутствующих символов и любые другие крайние случаи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...