Как заменить более одного символа в строке Python

#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. ООООО, так вот что пошло не так. Теперь я вижу, как это должно быть на самом деле. Спасибо!! Я ценю это!