Board logo

标题: [文本处理] 批处理求文本中电话号码的重复次数和相似个数 [打印本页]

作者: winsfly    时间: 2021-3-19 20:53     标题: 批处理求文本中电话号码的重复次数和相似个数

登记客户电话号码的文本中用批处理找出重复的电话号码并说明重复次数, 然后去掉重复值后再 找出电话号码的相似个数, 忽略电话号码第4-7位,  比如15012553321与15089853321忽略4-7位就算相似
比如1.txt里面内容如下:
15848973333
15832563333
15823223333
18670014378
13027497566
13027897566
13027897566
那么通过批处理得到的2.txt内容应该如下:
13027897566重复1次
15848973333相似3个
13027497566相似2个
作者: winsfly    时间: 2021-3-19 20:58

回复 1# winsfly


    for /f "delims=" %%k in (1.txt) do (find /i "%%k" 对比结果\2.txt||echo %%k>>对比结果\2.txt)

这个命令可去掉重复的电话号码后     再去找相似电话号码,其实就是找!OldStr:~0,3!....!OldStr:~7,4!    的重复次数了,  具体细节脑袋疼,求助
作者: Gin_Q    时间: 2021-3-19 21:40

  1. #!/usr/bin/env python3
  2. #coding=utf-8
  3. Tel = dict()
  4. Like = []
  5. with open("2.txt") as f:
  6.     for line in f:
  7.         line = line.replace("\n", "")
  8.         if Tel.get(line) == None:
  9.             Tel.setdefault(line, [1,0])
  10.             Like.append(line[:3] + line[7:])
  11.         else:
  12.             Tel[line][0] += 1
  13. for k,v in Tel.items():
  14.     Tel[k][1] = Like.count(k[:3] + k[7:])
  15. for k,v in Tel.items():
  16.     print(f"{k} 重复次数为 {v[0]}\t相似数量为{v[1]}")
  17.    
复制代码
  1. 15848973333 重复次数为 1        相似数量为3
  2. 15832563333 重复次数为 1        相似数量为3
  3. 15823223333 重复次数为 1        相似数量为3
  4. 18670014378 重复次数为 1        相似数量为1
  5. 13027497566 重复次数为 1        相似数量为2
  6. 13027897566 重复次数为 2        相似数量为2
复制代码

作者: qixiaobin0715    时间: 2021-3-19 22:42

“相似”统计在逻辑上不通,比如有10个号码相似,以哪个号码为准进行统计。
作者: cutebe    时间: 2021-3-20 09:55     标题: 需要下载三方工具gawk

  1. @echo off
  2. ::手机号码有重复的出现次数,即只有一次的不显示
  3. gawk "{a[$0]++}END{for(i in a){if(a[i]>1)print i\":\"a[i]}}" tel.txt
  4. ::去重复号码后,手机号码出现相似次数,手机号的前3位+后4位一样为相似
  5. gawk "{a[$0]}END{for(i in a){print i}}" tel.txt|gawk "{a[substr($0,1,3)\"****\"substr($0,8,4)]++}END{for(i in a){print i\":\"a[i]}}"
  6. pause
复制代码

作者: netdzb    时间: 2021-3-20 12:26

回复 3# Gin_Q

python怎样处理文件不存在的异常

def module():
        withopen('data.json','r') as f:
                我的代码

就是data.json要是不存在,抛个异常应该怎么写?代码又是定义在自己的模块中的。
作者: Gin_Q    时间: 2021-3-20 13:24

回复 6# netdzb


try:
    文件打开
except:
    捕获异常 打开文件异常
finally:
    总是要执行的代码
作者: winsfly    时间: 2021-3-20 15:21

回复 4# qixiaobin0715
以碰到的第一个号码为准
作者: winsfly    时间: 2021-3-20 15:23

回复 5# cutebe
gawk可以显示在cmd,  结果怎么输出到txt文本中呢?
并且显示结果为  13027497566重复1次   18670014378相似2次这样子呢




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2