为了账号安全,请及时绑定邮箱和手机立即绑定

如何返回仅包含特定单词的行

如何返回仅包含特定单词的行

ibeautiful 2021-08-17 15:49:46
运行一个简单的程序,它接受两个输入、一个输入文件和一个要搜索的词。然后它应该打印出包含该单词的所有行。例如,我的输入文件包含 5 个句子,如下所示:My cat is named garfieldHe is my first CatMy mom is named cathyThis is a catastropheHello how are you我要检查的词是 cat这是我写的代码:input_file = sys.argv[1]input_file = open(input_file,"r")wordCheck = sys.argv[2]for line in input_file:    if wordCheck in line:        print lineinput1.close()现在很明显,这将返回第 1、3 和 4 行,因为它们在某些时候都包含“cat”。我的问题是,我将如何工作,以便仅打印第 1 行(唯一带有“cat”一词的行)?第二个问题是,在不考虑大小写的情况下,获取所有包含“cat”一词的行的最佳方法是什么。因此,在这种情况下,您将返回第 1 行和第 2 行,因为它们分别包含“cat”和“Cat”。提前致谢。
查看完整描述

3 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您可以为此使用正则表达式:


import re


# '\b': word boundary, re.I: case insensitive 

pat = re.compile(r'\b{}\b'.format(wordCheck), flags=re.I)


for line in input_file:

    if pat.search(line):

        print line


查看完整回答
反对 回复 2021-08-17
?
青春有我

TA贡献1784条经验 获得超8个赞

这是一个简短的方法,in直接在单词列表上使用而不是在字符串上使用。


word = 'cat'

for line in lines:

    if word in line.split(' '): # use `in` on a list of all the words of that line.

        print(line)

输出: My cat is named garfield


查看完整回答
反对 回复 2021-08-17
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

对于您的第一个问题,您可以使用break语句在获得第一个匹配项后停止循环


for line in input_file:

    if wordCheck in line.split(' '):

        print line

        break # add break here

关于你的第二个问题,请用户lower()功能,一切都转换成小写,所以Cat和cat会被检测到。


for line in input_file:

    if wordCheck in line.lower().split(' '):

        print line


查看完整回答
反对 回复 2021-08-17
  • 3 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号