#python #list #input #split #str-replace
Вопрос:
Заранее извините, я только начинаю заниматься программированием.
Я борюсь с этой программой больше, чем думал. Посмотри:
string = str(input("Enter a string: ")) delimiter = input("Enter delimiters: ") s = list(string) d = list(delimiter) def split(string, delimiter): for i in s: if i in d: x = string.replace(i, " ") print(x) split(string, delimiter)
И результат, который я должен получить, это:
Enter a string: Welcome to Python Enter delimiters: oe W lc m t Pyth n
Здесь возникает проблема: если я введу более 1 символа, программа передаст только последний введенный мной символ и проигнорирует остальные.
Вот результат, который я получаю:
Enter a string: Welcome to Python Enter delimiters: oe Welc me t Pyth n
Я буду признателен за любую оказанную помощь! Заранее спасибо!!!
Ответ №1:
Даниил. Ответ от DSMSTHN правильный, но для вас есть дополнительная заметка. str не нужно преобразовывать в список, потому что он уже может быть повторен. Итак, вот моя версия кода.
string = input("Enter a string: ") delimiter = input("Enter delimiters: ") def split(string, delimiter): for s in string: if s in delimiter: string = string.replace(s, " ") print(string) split(string, delimiter)
Комментарии:
1. Большое вам спасибо!!! Я был почти уверен, что это не сработает без списков. Я ценю это!
Ответ №2:
Вы можете использовать re.sub()
для своего вопроса :
import re def split(string, delimiter): pattern = "[" delimiter "]" new_string = re.sub(pattern, " ", string) return new_string string = str(input("Enter a string: ")) delimiter = input("Enter delimiters: ") split(string, delimiter)
Комментарии:
1. Спасибо!! Я еще не изучал модуль «re», но, увидев эту программу и поняв, как она работает, теперь я могу получить представление о том, как она работает!. Я ценю это!
Ответ №3:
строка параметра передается как копия и сама по себе не изменяется. итак, каждый раз, когда вы устанавливаете x = строка.замените(i, » «). вы снова получаете исходную строку и заменяете только текущий символ i.
это должно сработать:
def split(string, delimiter): x = string for i in s: if i in d: x = string.replace(i, " ") print(x)
Комментарии:
1. ООООО, так вот что пошло не так. Теперь я вижу, как это должно быть на самом деле. Спасибо!! Я ценю это!