免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 809 | 回复: 10

[文本处理] 找出同一种数字在不同位置 [复制链接]

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-02 14:10 |显示全部楼层
本帖最后由 aaaa_123 于 2019-11-02 14:41 编辑

找出每行同一种数字出现在不同位置2次    而且是1,30个字母行      谢谢

poiu2ytrewqlkj2hgfdsamnbvcxz

zx2cvbnma22sdfghjklqw2ertyuiop

po2i2u2y2t2r2e2wqlkj2hgfdsamnbvcxz

zxc1vbnma9sdfg2hjk7lqwertyuiop

poi2u2ytr2ew4qlkjhgfdsamnbvcxz

zxc25252vbnmas22525522dfghjklqwertyuiop

poiu2255ytrew5522qlkjhgfdsamnbvcxz

zxcv99bnmasdfghjkqwertyuiop

zxcv99bnma9sdfghjkqwertyuiop

zxcv99bnmasdfghj99kqwertyuiop

poi3u3ytrewqlkjhgfdsamnbvcxz

zxcv4bnm4asdfghjklqwertyuiop

poiuytrewqlkjhgfdsa5m5nbvcxz

zxcvbnmasdfghjklqwertyuiop66

zxcvbnmasdfghjklqwertyuiop6

poiuytrewqlkjhgfdsa7nbvcxz

zxcvbnmasdf8gh8jklqwertyuiop

poiuytrewqlkjh99gfdsamnbvcxz

zxcvbnm0a0sdfghjklqwertyuiop

poiu2ytrewqlkj2h2gfd2samnbvcxz

poi3u33y3trewqlkjhgfdsamnbvcxz

zxcv4b4nm4a4sdf4ghjklqwe4rtyuiop

poiuytre5wqlkjhgfdsa55m55nbvcxz

zxcvbnmasd8f8gh89j9klqwertyuiop

zxcvbnmasd78f78gh89j9klqwertyuiop

zxcvbnm1a0sdfghj0k0lqwertyuiop

poiu2ytrewqlkjhgfdsamnbvcxz

poiu3ytrewqlkjhgfdsamnbvcxz

zxcvbnm4asdfghjklqwertyuiop

poiuytrewqlkjhgfdsam5nbvcxz

zxcvbnmasdf7ghjklqwertyuiop

zxcvbnm0asdfghjklqwertyuiop


hgfdsamnbvcxz2

10poiuytrewq

fghjklqwertyuiop22

33poiuythgfdsam5nbvcxz

7zxcvbnmasdrtyuiop77

6zxcvbnmweryuiop6

1
111
22222
333
777777777
44
j
fghjk
tyuioplmnbv
poiuytrewqlkjhgfdsamnbvcxz
zxcvbnmasdfghjklqwertyuiop



理应得到...   

poiu2ytrewqlkj2hgfdsamnbvcxz

zxcv99bnmasdfghjkqwertyuiop

zxcv99bnmasdfghj99kqwertyuiop

poi3u3ytrewqlkjhgfdsamnbvcxz

zxcv4bnm4asdfghjklqwertyuiop

poiuytrewqlkjhgfdsa5m5nbvcxz

zxcvbnmasdfghjklqwertyuiop66

zxcvbnmasdf8gh8jklqwertyuiop

poiuytrewqlkjh99gfdsamnbvcxz

zxcvbnm0a0sdfghjklqwertyuiop

fghjklqwertyuiop22

6zxcvbnmweryuiop6





论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-02 14:11 |显示全部楼层
           

论坛徽章:
7
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:06
发表于 2019-11-04 09:44 |显示全部楼层
本帖最后由 cfwyy 于 2019-11-04 10:03 编辑

1.每行同一种数字有且仅有2次吗?还是大于等于2次都可以, 因为你的结果第三行有4个9。
2. 每行有 不同的数字都有2次呢? 比如aa22bb44dd55ee  算不算呢?3. 每行有一种数字2次,其它数字一次,比如aa22bb3dd  算不算呢?

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-04 10:09 |显示全部楼层
本帖最后由 aaaa_123 于 2019-11-04 10:11 编辑

回复 3# cfwyy

您好,,,
对每行同一种数字有且仅有2次 不大于3次 也不是1次     第三行有4个9  是因为它连续性有2个9的  而且也是在不同位置仅2次  符合条件了  如果3个9就不符合条件


aa7bb7d7ee  不算
aa77bb77d 算
aa77bb77dd77ee  不算
................................................

aa22bb44dd55ee  不算
aa22bb22d 算
aa22bb22dd22ee  不算


符合条件思路
主题我可能说的不太通透
这样说应该能明白一些

例如
上面有一个7的数字出现不同位置要2次  不大于3次 也不是1次

上面有2个77的数字出现不同位置要2次  不大于3次 但不允许3个777的

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-04 10:17 |显示全部楼层
本帖最后由 aaaa_123 于 2019-11-04 10:19 编辑

总体来说 主要抓住有2种符合条件

1.  有一个相同数字出现不同位置2次  不大于3次 但也不是1次

2. 有一个相同数字连续2次而且在不同位置2次  但不要在不同位置有3次的

论坛徽章:
7
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:06
发表于 2019-11-04 10:56 |显示全部楼层
回复 5# aaaa_123
还是不太明白你的需求。多位连续的数字算 一种数字? 比如a777b777c9 也算?   a1234b1234c9也算?
你说的不同位置指的是啥? 一个字符串中,每个字符的位置都是不同的啊。


论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-04 11:11 |显示全部楼层
本帖最后由 aaaa_123 于 2019-11-04 11:15 编辑

回复 6# cfwyy

连续的数字意思是 相同一个数字重复

比如你说的a777b777c9   a1234b1234c9

a777b777c9  连续相同一个数字已经重复3次了  不符合条件了  

a1234b1234c9    5种数字了    更不符合

不同位置    这个好理解吧     位置循环

论坛徽章:
7
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:06
发表于 2019-11-05 09:28 |显示全部楼层
本帖最后由 cfwyy 于 2019-11-05 09:38 编辑

回复 7# aaaa_123

按我的理解,需要的行,需要同时满足以下条件:
1. 至少有一个字母
2. 总长度在1到30之间
3. 有且有一种数字:
     数字出现仅2次;或者数字出现仅4次且每2个为连续。

不知道我理解的是不是你想要的?

python实现,仅供参考。
  1. #!/usr/bin/python3
  2. import re

  3. pattern1 = r'^[A-Za-z]*(\d)[A-Za-z]+\1[A-Za-z]*
  4. pattern2= r'^[A-Za-z]*(\d)\1[A-Za-z]*(\1\1)?[A-Za-z]*
  5. rx1 = re.compile(pattern1)
  6. rx2 = re.compile(pattern2)

  7. with open("1.txt","r",encoding="utf-8") as f:
  8.     fn = (line.strip('\n') for line in f if line.strip('\n'))
  9.     for line in fn:
  10.         if not (line.isalpha() or line.isdigit()) and 1<=len(line)<=30:
  11.             if rx1.match(line) or rx2.match(line):
  12.                     print(line)
复制代码


论坛code块有问题, 正则最后的 $' 显示不出来了。   

论坛徽章:
30
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3719周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-CU
日期:2019-09-08 23:26:25
发表于 2019-11-05 11:08 |显示全部楼层
回复 8# cfwyy


//论坛code块有问题, 正则最后的 $' 显示不出来了。
Discuz论坛都有这个Bug,这么多年了一直没解决

论坛徽章:
2
15-16赛季CBA联赛之八一
日期:2017-12-29 13:06:2315-16赛季CBA联赛之天津
日期:2018-08-08 17:39:46
发表于 2019-11-05 11:52 |显示全部楼层
回复 8# cfwyy

Thanks.....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

PostgreSQL中国大会,早鸟票抢购!

PostgreSQL中国大会,早鸟票抢购!
2019年11月29~11月30日,由 PostgreSQL中文社区与ITPUB联合主办的第九届《PostgreSQL 中国技术大会》将在北京隆重召开。PostgreSQL 作为功能最强的的开源关系型数据库之一,得到了越来越多企业的推广和运用,也越来越受到广大技术爱好者的欢迎和重视。这将是 PostgreSQL 的又一次交流盛会。




----------------------------------------

点击报名>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP