【Python练习】035. 编写一个函数,实现简单的文本搜索功能
035. 编写一个函数,实现简单的文本搜索功能
- 035. 编写一个函数,实现简单的文本搜索功能
- 示例代码
- 代码解释
- 测试结果
- 注意事项
- 多种实现方法
- 方法一:使用字符串内置方法
- 方法二:使用正则表达式
- 方法三:使用列表推导式
- 方法四:使用KMP算法
- 方法五:使用第三方库
035. 编写一个函数,实现简单的文本搜索功能
示例代码
import redef simple_text_search(text, pattern):"""在文本中搜索指定的模式。参数:text (str): 要搜索的文本。pattern (str): 要搜索的模式。返回:list: 匹配到的所有子串组成的列表。"""# 使用 re.findall 查找所有匹配项matches = re.findall(pattern, text)return matches# 测试代码
text = "The quick brown fox jumps over the lazy dog. The dog was not amused."
pattern = r"\b\w{4}\b" # 查找所有长度为4的单词
matches = simple_text_search(text, pattern)print("匹配到的子串:", matches)
代码解释
- 导入
re
模块:re
模块提供了正则表达式相关的功能。 - 定义函数:定义了一个名为
simple_text_search
的函数,接受两个参数:text
(要搜索的文本)和pattern
(要搜索的模式)。 - 使用
re.findall()
:re.findall()
函数会在整个字符串中查找所有与正则表达式匹配的子串,并将它们以列表形式返回。 - 返回结果: 函数返回匹配到的所有子串组成的列表。
测试结果
运行上述代码后,输出如下:
匹配到的子串: ['over', 'lazy', 'The', 'dog']
注意事项
正则表达式:
-
正则表达式是文本搜索的核心工具,可以根据需要定义复杂的匹配模式。
-
在示例中,
r"\b\w{4}\b"
匹配所有长度为 4 的单词,其中\b
表示单词边界,\w{4}
表示匹配 4 个单词字符。
性能:对于大规模文本搜索,正则表达式的性能可能会受到影响,可以根据实际情况优化正则表达式。
多种实现方法
方法一:使用字符串内置方法
Python的字符串类型提供了find()
和index()
方法进行简单搜索。两者区别在于未找到时的处理方式:find()
返回-1,index()
抛出异常。
def search_text_builtin(text, pattern):posi