免费注册 查看新帖 |

Chinaunix

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

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

论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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
2 [报告]
发表于 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
3 [报告]
发表于 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
4 [报告]
发表于 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
5 [报告]
发表于 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
6 [报告]
发表于 2017-02-22 11:40 |只看该作者
回复 5# 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
7 [报告]
发表于 2017-02-22 14:32 |只看该作者
回复 6# davie5201314


论坛徽章:
1
摩羯座
日期:2014-12-22 14:37:25
8 [报告]
发表于 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
9 [报告]
发表于 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
10 [报告]
发表于 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!"
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP