📜  门|门 IT 2007 |第 68 题(1)

📅  最后修改于: 2023-12-03 15:28:48.475000             🧑  作者: Mango

门|门 IT 2007 第 68 题 - 程序员介绍

题目描述

该题目要求实现一个关键字搜索功能,具体要求如下:

  • 用户输入关键字,程序从一个预先定义好的文本文件中查找所有含有该关键字的行。
  • 程序需要支持多个关键字同时搜索。
  • 搜索结果需要按照文本中出现的顺序排列,每一行需要输出行号和行内容。
解题思路

该题目可以分为以下几个步骤:

  1. 定义一个函数用于从文件中读取所有的行,并返回一个列表。
  2. 定义一个函数用于搜索关键字,并返回搜索结果。
  3. 定义一个函数用于输出搜索结果,并按照文本中出现的顺序排列。
读取所有行

我们可以使用 Python 内置的 open() 函数读取文件内容,并使用 readlines() 方法将文件内容按行分割成一个列表。

def read_file(file_path):
    with open(file_path, 'r') as f:
        return f.readlines()
搜索关键字

我们可以使用 Python 内置的 re 模块进行正则表达式匹配,用于搜索关键字。

import re

def search_keywords(lines, keywords):
    results = []
    for i, line in enumerate(lines):
        for keyword in keywords:
            if re.search(keyword, line):
                results.append((i + 1, line))
                break
    return results
排序输出结果

我们可以使用 Python 内置的 sorted() 函数按照行号进行排序,然后将结果输出。

def print_results(results):
    sorted_results = sorted(results, key=lambda x: x[0])
    for i, line in sorted_results:
        print(f"{i}: {line.rstrip()}")
总结

通过以上三个步骤,我们可以实现一个简单的关键字搜索程序。该程序可以扩展为支持 GUI 界面,同时支持更多的搜索选项等。

Markdown格式代码片段:

# 门|门 IT 2007 第 68 题 - 程序员介绍

## 题目描述

该题目要求实现一个关键字搜索功能,具体要求如下:

- 用户输入关键字,程序从一个预先定义好的文本文件中查找所有含有该关键字的行。
- 程序需要支持多个关键字同时搜索。
- 搜索结果需要按照文本中出现的顺序排列,每一行需要输出行号和行内容。

## 解题思路

该题目可以分为以下几个步骤:

1. 定义一个函数用于从文件中读取所有的行,并返回一个列表。
2. 定义一个函数用于搜索关键字,并返回搜索结果。
3. 定义一个函数用于输出搜索结果,并按照文本中出现的顺序排列。

```python
# 读取所有行
def read_file(file_path):
    with open(file_path, 'r') as f:
        return f.readlines()

# 搜索关键字
import re

def search_keywords(lines, keywords):
    results = []
    for i, line in enumerate(lines):
        for keyword in keywords:
            if re.search(keyword, line):
                results.append((i + 1, line))
                break
    return results

# 排序输出结果
def print_results(results):
    sorted_results = sorted(results, key=lambda x: x[0])
    for i, line in sorted_results:
        print(f"{i}: {line.rstrip()}")
总结

通过以上三个步骤,我们可以实现一个简单的关键字搜索程序。该程序可以扩展为支持 GUI 界面,同时支持更多的搜索选项等。