Python:从字符串中删除重复字符的最佳方法

Python:从字符串中删除重复字符的最佳方法,python,string,text-processing,Python,String,Text Processing,如何使用Python从字符串中删除重复字符?例如,假设我有一个字符串: foo = "SSYYNNOOPPSSIISS" 如何制作字符串: foo = SYNOPSIS 我是python新手,我已经厌倦了python,它正在工作。我知道有一个聪明的最好的方法。。只有经验才能证明这一点 def RemoveDupliChar(Word): NewWord = " " index = 0 for char in Word:

如何使用Python从字符串中删除重复字符?例如,假设我有一个字符串:

foo = "SSYYNNOOPPSSIISS"
如何制作字符串:

foo = SYNOPSIS
我是python新手,我已经厌倦了python,它正在工作。我知道有一个聪明的最好的方法。。只有经验才能证明这一点

def RemoveDupliChar(Word):
        NewWord = " "
        index = 0
        for char in Word:
                if char != NewWord[index]:
                        NewWord += char
                        index += 1
        print(NewWord.strip()) 
注意:顺序很重要,此问题与一个问题不同。

使用:


这是一个不导入itertools的解决方案:

foo = "SSYYNNOOPPSSIISS"
''.join([foo[i] for i in range(len(foo)-1) if foo[i+1]!= foo[i]]+[foo[-1]])

Out[1]: 'SYNOPSIS'
但是它比其他方法慢

def移除副本:
def removeDuplicate(s):  
    if (len(s)) < 2:
        return s

    result = []
    for i in s:
        if i not in result:
            result.append(i)

    return ''.join(result)  
如果(len)小于2: 返回s 结果=[] 对于s中的i: 如果我没有结果: 结果.追加(i) 返回“”。加入(结果)
这个怎么样:

oldstring = 'SSSYYYNNNOOOOOPPPSSSIIISSS'
newstring = oldstring[0]
for char in oldstring[1:]:
    if char != newstring[-1]:
        newstring += char    
怎么样

foo = "SSYYNNOOPPSSIISS"


def rm_dup(input_str):
    newstring = foo[0]
    for i in xrange(len(input_str)):
        if newstring[(len(newstring) - 1 )] != input_str[i]:
            newstring += input_str[i]
        else:
            pass
    return newstring

print rm_dup(foo)
我发现使用itertools和list Compression的解决方案即使我们将字符与列表的最后一个元素进行比较时,该解决方案也不起作用

您可以尝试以下方法:

string1 = "example1122334455"
string2 = "hello there"

def duplicate(string):
    temp = ''

    for i in string:
        if i not in temp: 
            temp += i

    return temp;

print(duplicate(string1))
print(duplicate(string2))

是否可以将grp更改为?@RahulPatil,
grp
,在答案修改之前)是可编辑的,它会生成分组在一起的单个项目(此处的字符)。我花了一些时间创建该函数,我不知道
itertools.groupby
你是怎么发现的?@RahulPatil它通常在循环中用作占位符名。你从不使用它,但它被放在那里,因为你需要放一些东西
itertools.groupby
是标准库中itertools模块的一部分。falsetru的文章中有一个链接answer@RahulPatil,我希望在标准库中找到有用的模块。
def remove_duplicates(astring):
  if isinstance(astring,str) :
    #the first approach will be to use set so we will convert string to set and then convert back set to string and compare the lenght of the 2
    newstring = astring[0]
    for char in astring[1:]:
        if char not in newstring:
            newstring += char    
    return newstring,len(astring)-len(newstring)
  else:
raise TypeError("only deal with alpha  strings")
string1 = "example1122334455"
string2 = "hello there"

def duplicate(string):
    temp = ''

    for i in string:
        if i not in temp: 
            temp += i

    return temp;

print(duplicate(string1))
print(duplicate(string2))