Как разбить строку неизвестное количество раз на список

В азбуке Морзе: пробел " " записывается как косая черта "/". Промежуток между буквами записывается как пробел " ".

Я сделал переводчик с английского на Морзе. Это было легко, так как каждая буква состояла из 1 символа, поэтому я мог разделить ее на символы. Однако идти другим путем сложно. Мне нужно иметь возможность обнаруживать разрывы между буквами, но также убедиться, что я не обнаруживаю разрывы между словами.

Вот мой код на питоне:

print("\nNote: not all characters are logged. \n\n")

english = [ "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","1","2","3","4","5","6",
            "7","8","9","0",".",",",";",":","!","?","(",")","-","_","!","&",
            " = ","+","$","/","'"," "]

morse = [ ".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",
          ".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",
          ".--","-..-","-.--","--..",".----","..---","...--","....-",".....",
          "-....","--...","---..","----.","-----",".-.-.-","-..-","-.-.-.",
          "---...","--..--","..--..","-.--.","-.--.-","-....-","..--.-","--..--",
          ".-...","-...-",".-.-.","...-..-","-..-.",".----."," /"]





while True:
    print ("English to Morse: press 1 ")
    print ("Morse to English: press 2 ")
    print ("What is morse code: press 3")
    translate_direction = input("\n>").replace(" ","")

                            
    if translate_direction == "1":
    
        tobetranslated = input("\nTranslate English to Morse Code\n\n> ").lower()
        splitupinput = list(tobetranslated)
        finishedoutput = ""

        for i in splitupinput:
            englishloc = english.index(i)
            finishedoutput = finishedoutput + morse[englishloc]
            finishedoutput = finishedoutput + " "    
              
        print(finishedoutput)

    elif translate_direction == "2":

        tobetranslated = input("\nTranslate Morse Code to English\n\n> ").lower()
        tobetranslated = tobetranslated.replace(" ","ß ")
        
        finishedoutput = ""

        for i in splitupinput:
            englishloc = english.index(i)
            finishedoutput = finishedoutput + morse[englishloc]
            finishedoutput = finishedoutput + " "    
              
        print(finishedoutput)

    elif translated_irection == "3":
        print("Morse code is... (insert long-winded explanation of the history of morse code and its applications)")

Я использую .replace(), чтобы заменить пробелы каким-то символом, которого нет в азбуке Морзе, плюс пробел, чтобы при разделении по «π», которое будет потеряно, у меня оставался пробел, чтобы я мог определить разделение между словами. .

Но у меня проблема: я не знаю, как разбить строку на неопределенное количество разбиений в список.

Любая помощь?

Забавный факт: у меня есть только стандартная библиотека. Извини! Я несовершеннолетний, и мои родители не хотят ничего скачивать, сколько бы я ни просил.

Я также новичок в python, поэтому, если бы вы могли быстро объяснить, как/почему что-то работает, это было бы очень приятно :)

string.split() то, что вы хотите? Он разделит строку на список по любому символу (символам), который вы укажете.

mazore 14.12.2020 00:47

Пожалуйста, покажите это своим родителям: полвека назад мои родители поддержали меня, когда я захотел заняться программированием. (Они возили меня в университетский компьютерный центр.) И это дало мне прекрасную карьеру. Загрузка пакетов Python сильно отличается и намного безопаснее, чем загрузка большинства вещей из Интернета. И вы сможете многому научиться и помочь создать основу для ВАШЕЙ великой карьеры. С уважением, мисс и мистер Тунг, пожалуйста, обратите внимание на более тонкие правила загрузки.

O. Jones 14.12.2020 01:43
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
2
2
104
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вам нужен встроенный метод .split().

Он делает такие вещи.

>>> '1/2/3'.split('/')
['1', '2', '3']

Читайте об этом здесь. https://docs.python.org/3/library/stdtypes.html#string-methods

Вы можете использовать функцию разделения строк, чтобы разделить строку на список строк с помощью предоставленного разделителя. Например, следующий код разбивает строку по пробелам в список строк.

stuff_to_split = "Hello there my friend"

list_of_strings = stuff_to_split.split(' ')

for word in list_of_strings:
    print(word)

Выходы

Hello
there
my
friend

Другие вопросы по теме