此人真菜 2022-03-16 17:36 采纳率: 75.8%
浏览 111
已结题

如何用正则来提取最长文本

有一列数据(来自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
  • 写回答

3条回答 默认 最新

  • ~白+黑 新星创作者: python技术领域 2022-03-16 21:53
    关注
    
    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)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 3月26日
  • 已采纳回答 3月18日
  • 创建了问题 3月16日