免费注册 查看新帖 |

ChinaUnix.net

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

用python写一个简单的文本查找关键字脚本 [复制链接]

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
发表于 2017-02-21 18:07 |显示全部楼层
1、现有一个list.txt的文本,内容如下:
  1. 1        xiao        IT        001
  2. 2        co        IT        002
  3. 3        mao        hr        003
  4. 4        cai        kf        004
  5. 5        tiao        xs        005       
复制代码
2、要求:用raw_input输入你想要搜索的关键词,然后打印这一行或者两行

例如,我输入IT,会打印第一行和第二行

3、如果输入的关键词是文件没有的,打印don't match it!然后继续搜索,直到搜索到为止!

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-02-22 10:38 |显示全部楼层
回复 1# davie5201314


a = raw_input("please input : ")
s=0
with open('/xxx/list.txt') as f:
    for i in f:
        if a in i.split(" "):
        print i,
        s+=1
    if s == 0:
        print "don't match it!"

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-02-22 10:38 |显示全部楼层
回复 1# davie5201314


a = raw_input("please input : ")
s=0
with open('/xxx/list.txt') as f:
    for i in f:
        if a in i.split(" "):
        print i,
        s+=1
    if s == 0:
        print "don't match it!"

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
发表于 2017-02-22 11:07 |显示全部楼层
回复 3# zxy877298415

完全不对,1、循环查询功能没实现,2、查询功能也没实现

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-02-22 11:11 |显示全部楼层
回复 4# davie5201314


请测试完了在说实现没实现
[root@test200 shell]# python xx.py
please input : IT
1        xiao        IT        001
2        co          IT        002
[root@test200 shell]# python xx.py
please input : xxoo
don't match it!
[root@test200 shell]# more xx.py
a = raw_input("please input : ")
s=0
with open('/root/shell/file') as f:
        for i in f:
                if a in i.split(" "):
                        print i,
                        s+=1
        if s == 0:
                print "don't match it!"

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
发表于 2017-02-22 11:40 |显示全部楼层
回复 5# zxy877298415

当然是测试完后才说的 1.png

1、循环查询没有,输入文本中没有的,直接打印匹配不上,没有让你继续输入新的查询

2、文本中有的,也是匹配不上

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-02-22 14:32 |显示全部楼层
回复 6# davie5201314


QQ截图20170222143131.png

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
发表于 2017-02-22 15:16 |显示全部楼层
回复 7# zxy877298415

你有没有发现两个问题:第一:你搜索的时候,是按顺序搜索的,如果你先输入最后一个tiao来搜索,就会提示don't match it,同样,如果你随意打乱搜索顺序,得到的结果,都将是don't match it!

第二:你有没有发现,你这个for循环是有问题的,只能搜索五次(文件行数5行就只能输入五次),很明显,这不是一个无限循环的搜索方式

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
发表于 2017-02-22 15:17 |显示全部楼层
回复 7# zxy877298415

你有没有发现两个问题:第一:你搜索的时候,是按顺序搜索的,如果你先输入最后一个tiao来搜索,就会提示don't match it,同样,如果你随意打乱搜索顺序,得到的结果,都将是don't match it!

第二:你有没有发现,你这个for循环是有问题的,只能搜索五次(文件行数5行就只能输入五次),很明显,这不是一个无限循环的搜索方式

论坛徽章:
30
申猴
日期:2014-04-10 09:43:532015年亚洲杯纪念徽章
日期:2015-03-20 14:40:232015亚冠之阿尔纳斯尔
日期:2015-06-02 18:59:042015亚冠之阿尔希拉尔
日期:2015-06-30 15:22:572015亚冠之大阪钢巴
日期:2015-07-20 10:44:332015亚冠之阿尔纳斯尔
日期:2015-10-28 14:57:5215-16赛季CBA联赛之新疆
日期:2015-12-25 10:18:45黑曼巴
日期:2016-06-26 21:39:5315-16赛季CBA联赛之山西
日期:2016-07-25 21:54:2715-16赛季CBA联赛之北京
日期:2016-10-27 12:07:2315-16赛季CBA联赛之八一
日期:2017-07-07 16:39:0915-16赛季CBA联赛之吉林
日期:2017-09-04 12:14:43
发表于 2017-02-22 16:08 |显示全部楼层
回复 9# davie5201314

以后请一次性把需求说清楚

[root@test200 shell]# python xx.py
please input : IT
1        xiao        IT        001
2        co          IT        002
please input : kf
4        cai         kf        004
please input : 005
5        tiao        xs        005
please input : 4
4        cai         kf        004
please input : xxoo
don't match it!
please input : tuichu
[root@test200 shell]# cat xx.py
with open('/root/shell/file') as f:
    l = f.read().split("\n")   
   
while(1):
    a = raw_input("please input : ")
    t=filter(lambda x: a in x.split(" "),l)
    if(t):
        print "\n".join(t)
    elif a == "tuichu":
        break
    else:
        print "don't match it!"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP