首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >搜索文件中的文本

搜索文件中的文本
EN

Code Review用户
提问于 2021-08-23 22:50:51
回答 2查看 111关注 0票数 1

我在使用re.search的情况下实现了Grep:

代码语言:javascript
复制
#!/bin/python

"""
A grep implementation on Python
"""

from re import search
from sys import argv


def grep(word, file):
    for line in file:
        if search(word, line):
            print(line.strip())


if __name__ == "__main__":
    try:
        grep(argv[1], open(argv[2]))
    except FileNotFoundError:
        print("That's not a vaild file.")
    except IndexError:
        print("Params missing!")

但是,如果没有使用搜索I:

代码语言:javascript
复制
def grep(word, file):
    for line in file:
        if word in line:
            print(line.strip())

哪个更好,哪个更快?我认为第二种方式是毕达通的方式。

EN

回答 2

Code Review用户

回答已采纳

发布于 2021-08-24 04:48:09

您应该在第一个版本中使用re.escape(...)来匹配第二个版本的行为。没有它,word中的特殊字符可以解释为正则表达式模式。

捕获IndexError只会确保用户提供了足够的参数;它不会对太多的参数进行保护。如果存在,grep.py hello world file.txt将搜索world文件中的单词hello,而不是按预期搜索file.txt。检查实际的argv长度,或者更好地使用argparse模块。

票数 1
EN

Code Review用户

发布于 2021-08-24 06:12:43

从维基百科

grep是一个命令行实用工具,用于搜索与正则表达式匹配的行的纯文本数据集。它的名称来自ed命令g/re/p (全局搜索正则表达式和打印匹配行)

因此,您的第二个grep实现实际上根本不是一个。取消资格案件结案。

票数 1
EN
页面原文内容由Code Review提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://codereview.stackexchange.com/questions/266336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档