删除字符串Python中重复的字符集

2024-09-29 23:16:44 发布

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

我有一个字符串'1a1b1c1d3e3e3e1f1g2h2h1i1j1k1l1m1n4o4o4o4o1p1q2r2r1s2t2t2u2u1v1w1x1y1z' 我想删除这些租船人的所有副本:3e, 4o, 2r等等。 在Python中如何实现这一点


Tags: 字符串副本租船
3条回答

您可以使用“列表理解”和“设置”按以下方式执行此操作:

s = '1a1b1c1d3e3e3e1f1g2h2h1i1j1k1l1m1n4o4o4o4o1p1q2r2r1s2t2t2u2u1v1w1x1y1z' s = [s[i:i+2] for i in range(0, len(s) - 1, 2)] s = set(s)

希望能有帮助

这是一种相当粗糙的做法。
但这项工作并不复杂

这还假设您需要删除的是已知的角色组合。您没有提到需要删除所有重复项,仅删除一组已知项

x = '1a1b1c1d3e3e3e1f1g2h2h1i1j1k1l1m1n4o4o4o4o1p1q2r2r1s2t2t2u2u1v1w1x1y1z'
for y in ['3e', '4o', '2r']:
    x = x[:x.find(y)+len(y)] + x[x.find(y)+len(y):].replace(y, '')
print(x)

查找所需对象3e例如)的第一次出现,并在该对象之前构建字符串的新版本,包括该对象,并使用原始字符串的其余部分作为字符串的前缀,但将对象替换为空字符串

这有点慢,但再一次,完成了任务。 这里没有错误处理,所以要小心-1位置等

str_='1a1b1c1d3e3e3e1f1g2h2h1i1j1k1l1m1n4o4o4o4o1p1q2r2r1s2t2t2u2u1v1w1x1y1z'
seen = set()
result = []
n=2
for i in range(0,len(str_),n):
    item=str_[i:i+n]
    if item not in seen:
        seen.add(item)
        result.append(item)

相关问题 更多 >

    热门问题