有一列数据(来自excel),如何通过正则表达式或者pandas(优先pandas),让最低层级保留。
例如1.1为1的下层,则删除1,保留1.1。
又例如3.1.1.1是3、3.1、3.1.1的下层,所以删除3、3.1、3.1.1
1
1.1
1.2
2
2.1
3
3.1
3.1.1
3.1.1.1
3.1.1.2
3.2
所以,最终输出的结果如
1.1
1.2
2.1
3.1.1.1
3.1.1.2
3.2
a=["1","1.1","1.1.1.1","2","2.1","2.2","2.3","3","3.1","3.2.1","3.1.1.1.1","3.1.2","3.1.3",]
b=set()
for i in range(len(a)):
temp=a[i]
for k in range(i+1,len(a)):
if a[k].startswith(a[i]):
temp = a[k] if len(a[k])>=len(a[i]) else a[i]
b.add(temp)
print(b)
这个简单呐,匹配开头就行。只要1.1的开头是1就删除1
def f(item):
t = item
for i in l:
if i.startswith(t + '.'):
t = i
return t
l = ["1","1.1","2","2.1","1.2","1.10.1","1.10"]
res = set(map(f, l))
print(res)