执行返回ImportError: cannot import name 'BoyerMoore' from 'pybm'
时间: 2023-11-05 22:51:38 浏览: 86
抱歉,我之前给出的代码有误。似乎 `pybm` 模块没有提供 `BoyerMoore` 类。你可以改用其他字符串匹配算法,比如 Python 自带的 `re` 模块中的正则表达式来实现字符串匹配。请尝试以下修改后的代码:
```python
import re
import os
def search_text_in_files(directory_path, search_text):
found_lines = []
# 获取目录下所有文件的列表
file_list = [f for f in os.listdir(directory_path) if os.path.isfile(os.path.join(directory_path, f))]
for filename in file_list:
file_path = os.path.join(directory_path, filename)
with open(file_path, 'r', encoding='utf-8') as file:
lines = file.readlines()
for i, line in enumerate(lines, 1):
if re.search(search_text, line):
found_lines.append((file_path, i, line.strip()))
if not found_lines:
print("不存在")
else:
print("包含搜索字符串'{}'的行:".format(search_text))
for file_path, line_num, line in found_lines:
print("File: {}, Line {}: {}".format(file_path, line_num, line))
# 使用示例
directory_path = 'your_directory_path' # 替换为实际目录路径
search_text = '变更'
search_text_in_files(directory_path, search_text)
```
这个修改后的代码使用 `re.search()` 函数来进行字符串匹配,它使用了正则表达式来查找字符串。请将 `'your_directory_path'` 替换为实际的目录路径。
阅读全文