删除重复项但保留顺序

2024-09-30 20:27:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图减少一个字符串的重复,但我不想创建一个集。例如

mystring = 'TTTTTPPPTPTTTTPPPPPPPPP'

字母的顺序是'TPTPTP',所以我需要一个结果字符串

newstring = 'TPTPTP'

我相信有一个简单的一行,但它逃避我


Tags: 字符串顺序字母mystringnewstringtttttppptpttttppppppppptptptp
3条回答

用前面的一个字符压缩每个字符,然后取不同的字符:

>>> a
'TTTTTPPPTPTTTTPPPPPPPPP'
>>> ''.join(i for i, j in zip(a, '\0' + a) if i != j)
'TPTPTP'

如果你喜欢,你也可以使用正则表达式

>>> import re
>>> mystring = 'TTTTTPPPTPTTTTPPPPPPPPP'
>>> ''.join(re.findall(r'(.)\1*', mystring))
'TPTPTP'

查找任何字符,后跟同一个找到的字符零次或多次

你在找itertools.groupby

>>> mystring = 'TTTTTPPPTPTTTTPPPPPPPPP'
>>> groups = [x for x, y in itertools.groupby(mystring)]
>>> groups
['T', 'P', 'T', 'P', 'T', 'P']
>>> ''.join(groups)
TPTPTP

Official documentation

相关问题 更多 >