Как удалить повторяющиеся символы из строки с помощью Python? Например, допустим, у меня есть строка:
foo = 'mppmt'
Как создать строку:
foo = 'mpt'
ПРИМЕЧАНИЕ: Заказ не важен
Как удалить повторяющиеся символы из строки с помощью Python? Например, допустим, у меня есть строка:
foo = 'mppmt'
Как создать строку:
foo = 'mpt'
ПРИМЕЧАНИЕ: Заказ не важен
Если порядок не имеет значения, вы можете использовать
"".join(set(foo))
set()
создаст набор уникальных букв в строке, а "".join()
объединит буквы обратно в строку в произвольном порядке.
Если порядок имеет значение, вы можете использовать collections.OrderedDict
в Python 2.7 или выше:
from collections import OrderedDict
foo = "mppmt"
result = "".join(OrderedDict.fromkeys(foo))
в результате получается строка "mpt"
.
Если порядок имеет значение, как насчет:
>>> foo = 'mppmt'
>>> ''.join(sorted(set(foo), key=foo.index))
'mpt'
Если порядок не в этом:
>>> foo='mppmt'
>>> ''.join(set(foo))
'pmt'
Чтобы сохранить порядок:
>>> foo='mppmt'
>>> ''.join([j for i,j in enumerate(foo) if j not in foo[:i]])
'mpt'
Создайте список в Python, а также набор, который не допускает дублирования. Решение 1:
def fix(string):
s = set()
list = []
for ch in string:
if ch not in s:
s.add(ch)
list.append(ch)
return ''.join(list)
string = "Protiijaayiiii"
print(fix(string))
Метод 2:
s = "Protijayi"
aa = [ ch for i, ch in enumerate(s) if ch not in s[:i]]
print(''.join(aa))
#We can do it simply by using Regex libs of python.
#Check code and apply in your Program:
#Input= 'pppmm'
import re as reg
s='ppppmm'
pattern=reg.compile(r"(.)\1{1,}",reg.DOTALL)
string=pattern.sub(r"\1",s)
print(string)
#Output: pm
Если порядок важен,
seen = set()
result = []
for c in foo:
if c not in seen:
result.append(c)
seen.add(c)
result = ''.join(result)
Или сделать это без наборов:
result = []
for c in foo:
if c not in result:
result.append(c)
result = ''.join(result)
Как упоминалось "".join(set (foo)) и коллекции. Добавлен foo = foo.lower(), если строка содержит символы верхнего и нижнего регистра, и вам нужно удалить ВСЕ дубликаты независимо от того, являются ли они верхними или нижними символами.
from collections import OrderedDict
foo = "EugeneEhGhsnaWW"
foo = foo.lower()
print "".join(OrderedDict.fromkeys(foo))
печатает eugnhsaw
def dupe(str1):
s=set(str1)
return "".join(s)
str1='geeksforgeeks'
a=dupe(str1)
print(a)
хорошо работает, если порядок не важен.
d = {}
s="YOUR_DESIRED_STRING"
res=[]
for c in s:
if c not in d:
res.append(c)
d[c]=1
print ("".join(res))
def remove_duplicates(value):
var=""
for i in value:
if i in value:
if i in var:
pass
else:
var=var+i
return var
print(remove_duplicates("[email protected]@@123#*#*"))
Поскольку строка представляет собой список символов, преобразование его в словарь удалит все дубликаты и сохранит порядок.
"".join(list(dict.fromkeys(foo)))