如何使用python从给定列表中删除包含重复的连续字符的字符串?

时间:2019-08-21 17:14:31

标签: python

['bebeeeb','babab','afa','eeefe','bbfb','eaeeea'] 实际上这是一个列表,我想使用python删除包含重复的连续字符的字符串...输出应为[babab,afa]。谢谢。

3 个答案:

答案 0 :(得分:1)

我建议使用一些正则表达式来查找重复字符。

import re

input = ['bebeeeb', 'babab', 'afa', 'eeefe', 'bbfb', 'eaeeea']
output = []

for s in input:
    if not re.search(r'(.)\1', s):
        output.append(s)

print(output)  # ['babab', 'afa']

让我分解一下此正则表达式。

.:匹配任意字符
(.):在组(组1)中捕获该字符
\1:与第1组匹配相同的字符。

这也可以使用列表理解来完成。

output = [s for s in input if re.search(r'(.)\1', s)]

答案 1 :(得分:0)

import copy

for string in copy.deepcopy(list):
    for a in range(len(string)-1):
        if string[a]==string[a+1]:
           del list[list.index(string)]

答案 2 :(得分:0)

您可以使用表达式any(prev==cur for prev,cur in zip(word, word[1:]))检查单词中两个连续的字符是否匹配。因此,请使用基本的列表理解功能进行过滤

>>> lst = ['bebeeeb', 'babab', 'afa', 'eeefe', 'bbfb', 'eaeeea']
>>> [word for word in lst if not any(prev==cur for prev,cur in zip(word, word[1:]))]
['babab', 'afa']

或者,您可以使用re.search来检查单词是否与常规字符匹配

>>> [word for word in lst if not re.search(r'(.)\1', word)]
['babab', 'afa']