超大txt文本,提取连续的8位数,并去除重复数,去除可能是年月日的8位

查看 85|回复 5
作者:ypddd   
有500多万条类似文本信息:
12222111_无关信息_无关信息_无关信息.zip
无关信息_《无关信息》_无关信息15424567_.rar
无关信息_无关13267812_(信息)_【无关信息】.pdf
无关信息_【无关】_信息_(无关信息)_14522189.doc
9013141516abcdefg20130815.doc
  • 只提取数字相连的8位数,有的行不包括8位数字。其它都不固定。
  • 如果同一行数据有10位数字+8位数字,则只提取8位数字。

  • [color=]【删去此条,因为大大增加了复杂度】【
    日期范围:20100101-20230201】最后两条中的“20130815”"20221230",都符合“年月日”格式,最后提取出来的数字不包括这样的数字。
  • 求提取数字的方法或者工具,并去除重复数。

    -----------------------------------------------------------------------
    论坛有一个类似求助帖,应助的视频链接失效了,见:
    txt文本中提取连续的8位数并去除重复数  https://www.52pojie.cn/thread-1019556-1-1.html
    上面链接的5楼另有一个代码,没其它说明。我看不懂怎么用。
    -----------------------------------------
    希望步骤清晰哈!
    谢谢帮助!给大佬递茶.gif

    信息, 数字

  • geek_NO1   

    那个帖子5楼的回答是linux系统下的工具命令对每条数据进行正则处理,然后排序。问题来了,20241290这种可能参杂着未来日期的数字是否需要。你的需求是在那帖子的基础上进一步过滤去除日期数据,还要麻烦一点。可能还要考虑诸如根据年份判断0229或者0228是否正确等等小概率情况
    nixingla   

    要是我的话, 我用python. 写个脚本.
    1. 读取文件当中的一行信息
    2. 用正则表达式匹配8位长度的数字
    3. 判断这个数字的长度是否在某个范围之内比如说(700101-230206), 如果在这个范围当中再进一步代表月份和日期的这两个数字是满足日期的条件.
    4. 步骤3获取的数字是否是日期, 不是日期就放到集合当中
    5. 重复上述步骤直到读完整个.
    不过具体的文本谁也没看过不知道实际提取的时候会不会有什么其他的情况, 只能是边写边改.
    ypddd
    OP
      


    geek_NO1 发表于 2023-2-6 15:37
    那个帖子5楼的回答是linux系统下的工具命令对每条数据进行正则处理,然后排序。问题来了,20241290这种可能 ...

    谢谢geek_NO1指点!看起来排除日期一类的数字大大增加了复杂度。现在原帖改为不需要排除日期了,管理员审核后会更新。其它不变。您能指点一下怎么做吗?
    ypddd
    OP
      


    nixingla 发表于 2023-2-6 15:55
    要是我的话, 我用python. 写个脚本.
    1. 读取文件当中的一行信息
    2. 用正则表达式匹配8位长度的数字

    谢谢nixingla老师指点,只要能处理一楼的例子就行
    ypddd
    OP
      


    geek_NO1 发表于 2023-2-6 15:37
    那个帖子5楼的回答是linux系统下的工具命令对每条数据进行正则处理,然后排序。问题来了,20241290这种可能 ...

    改动后的样例:
    【样例】
    12222111_无关信息_无关信息_无关信息.zip
    无关信息_《无关信息》_无关信息15424567_.rar
    无关信息_无关13267812_(信息)_【无关信息】.pdf
    无关信息_【无关】_信息_(无关信息)_14522189.doc
    9013141516abcdefg20130815.doc
    希望提取的结果:
    只提取数字相连的8位数,有的行不包括8位数字。其它都不固定。
    如果同一行数据有10位数字+8位数字,则只提取8位数字。
    去除重复数。
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部