Python:从字符串中删除重复字符的最佳方法
如何使用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:
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))