python - 如何在不删除分隔符的情况下从字符串中获取唯一值

标签 python python-3.x python-2.7

我必须从字符串中删除重复值,其中子值由分隔符分隔。我的示例字符串类似于 "aa~*yt~*cc~*aa",其中 ~* 是定界符,需要删除 aa 的重复出现

我也尝试使用 set cmmand 和下面的代码,但它们给出的输出为

"a~*ytc"

但是我需要输出:

"aa~*yt~*cc"

d = {}
s="aa~*yt~*cc~*aa"
res=[]
for c in s:
    if c not in d:
      res.append(c)
      d[c]=1
print ("".join(res))

我看了很多提供的答案,但无法解决这个问题。如果有任何解决方案,请告诉我。谢谢,非常感谢您的宝贵时间 :)

最佳答案

你可以 split分隔符的字符串,获取结果 listset(删除重复项),根据原始字符串和 join 中出现的顺序对元素进行排序再次设置 ~ 作为分隔符:

s = "aa~*yt~*cc~aa"

'~'.join(sorted(set(s.split('~')), key=s.index))
# 'aa~*yt~*cc'

如果性能很重要,请预先定义用于对结果集进行排序的字典:

l = s.split('~')
length = len(l)
d = {j:length-i for i,j in enumerate(l[::-1])}
# {'aa': 1, '*cc': 3, '*yt': 2}
'~'.join(sorted(set(l), key=lambda x: d[x]))
# 'aa~*yt~*cc'

关于python - 如何在不删除分隔符的情况下从字符串中获取唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57758609/

相关文章:

python - 使用长度和字母顺序对列表进行排序

python - 如何在不覆盖数据的情况下写入现有的 excel 文件(使用 pandas)?

google-app-engine - 设置 GAE 前端实例类的经验法则

python - Tensorflow:var.eval() 与 var.initialized_value().eval()

python-3.x - 项目不存在或不包含事件的 Cloud DataStore

Python 查找数组中最常见的值

python - 为什么我们在python中的每个方法都需要对应的类函数?

Python代码对象、函数和默认参数

python - 多重继承和使用其中一个基类的方法

python - 内置的 object() 什么时候有用?