如何使用Python从字符串中删除重复的字符?例如,假设我有一个字符串:
foo = 'mppmt'
如何使字符串变成:
foo = 'mpt'
注意:顺序不重要。
foo = 'mppmt'
如何使字符串变成:
foo = 'mpt'
注意:顺序不重要。
保持顺序的函数式编程风格:
import functools
def get_unique_char(a, b):
if b not in a:
return a + b
else:
return a
if __name__ == '__main__':
foo = 'mppmt'
gen = functools.reduce(get_unique_char, foo)
print(''.join(list(gen)))
"".join(list(dict.fromkeys(foo)))
mylist=["ABA", "CAA", "ADA"]
results=[]
for item in mylist:
buffer=[]
for char in item:
if char not in buffer:
buffer.append(char)
results.append("".join(buffer))
print(results)
output
ABA
CAA
ADA
['AB', 'CA', 'AD']
from collections import OrderedDict
def remove_duplicates(value):
m=list(OrderedDict.fromkeys(value))
s=''
for i in m:
s+=i
return s
print(remove_duplicates("11223445566666ababzzz@@@123#*#*"))
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("11223445566666ababzzz@@@123#*#*"))
你可以替换匹配项
rgx = r'(.)(?=.*\1)'
使用空字符串。
import re
print(re.sub(rgx, '', 'abbcabdeeeafgfh'))
#=> "cbdeagfh"
正则表达式匹配任何字符 (.
),将其保存到捕获组 1 ((.)
) 中,并通过使用 正向预查 (?=.*\1)
要求相同的字符 (\1
) 在字符串中后面出现。
在此示例中,第一个和第二个 'a'
被匹配,因此转换为空字符串,因为每种情况下字符串中都有另一个 'a'
。字符串中的第三个 'a'
没有被匹配,因为后面没有 'a'
。