У меня есть набор строк set1
, и все строки set1
имеют две конкретные подстроки, которые мне не нужны, и я хочу удалить.
Пример ввода:
set1={'Apple.good','Orange.good','Pear.bad','Pear.good','Banana.bad','Potato.bad'}
Поэтому в основном я хочу, чтобы .good
и .bad
подстроки удалены из всех строк.
Что я пробовал:
for x in set1:
x.replace('.good','')
x.replace('.bad','')
Но это, похоже, не работает вообще. В выводе нет абсолютно никаких изменений, и он совпадает с вводом. Я попытался использовать for x in list(set1)
вместо оригинального, но это ничего не меняет.
источник
string.replace()
устарела на python 3.x, теперь этоstr.replace()
.replace
не изменяет строку, она возвращает копию строки с заменой. Вы не можете изменить строку напрямую, потому что строки неизменны.Вам нужно взять возвращаемые значения
x.replace
и поместить их в новый набор.источник
Все, что вам нужно, это немного черной магии!
источник
Вы могли бы сделать это:
источник
x.replace('.good',' ')
иx.replace('.bad',' ')
не делает ничего для конечного результата. Распечатка будет такой же без них.re.sub
, как это:x = re.sub('((\.good$)|(\.bad$))', '', x)
replace
s и переместить все на одинre.sub
звонок)Я сделал тест (но это не ваш пример), и данные не возвращают их упорядоченно или полностью
Я доказал, что это работает:
или
источник
Когда нужно удалить несколько подстрок, одним простым и эффективным вариантом является использование
re.sub
скомпилированного шаблона, который включает в себя объединение всех подстрок, которые необходимо удалить, с помощью канала regex OR (|
).источник
Если список
Я делал что-то для списка, который представляет собой набор строк, и вы хотите удалить все строки, которые имеют определенную подстроку, вы можете сделать это
где
sub
скороговорка, которую вы не хотите иметь в списке строкLinSplitUnOr
например
Тогда
A
будетисточник
если вы удалите что-то из списка, вы можете использовать этот способ: (метод sub чувствителен к регистру)
источник