python在文件中查找多个关键字
时间: 2023-06-12 10:06:20 浏览: 210
你可以使用Python的文件I/O和字符串操作功能来查找多个关键字。以下是一种可能的解决方案:
```python
def find_keywords(filename, keywords):
with open(filename, 'r') as f:
content = f.read()
for keyword in keywords:
if keyword in content:
print(f"Found '{keyword}' in file '{filename}'")
```
在上面的代码中,`filename`是要搜索的文件名,`keywords`是一个包含要搜索的关键字的列表。函数打开文件并将其内容读入变量`content`中。接下来,它遍历关键字列表并在`content`中查找每个关键字。如果找到关键字,则打印出该关键字和文件名。
你可以调用这个函数来查找一个或多个文件中的多个关键字。例如:
```python
keywords = ['python', 'file', 'search']
find_keywords('myfile.txt', keywords)
```
这将在`myfile.txt`文件中搜索`'python'`、`'file'`和`'search'`关键字,并打印出找到的关键字和文件名。
相关问题
pytest分开断言一个文件中的多个关键字,关键字存储在字典中
你可以使用pytest的`parametrize`装饰器来实现这个目的。具体步骤如下:
1. 将关键字存储在字典中。
2. 定义一个函数,接收一个关键字作为参数,并使用`assert`语句验证关键字是否存在于文件中。
3. 使用`parametrize`装饰器在测试用例中传递多个关键字作为参数,并调用上述函数进行断言。
以下是示例代码:
```python
import pytest
keywords = {'apple': 'fruits.txt', 'carrot': 'vegetables.txt'}
def test_file_contains_keyword(keyword):
with open(keywords[keyword], 'r') as f:
content = f.read()
assert keyword in content
@pytest.mark.parametrize('keyword', keywords.keys())
def test_keywords_in_files(keyword):
test_file_contains_keyword(keyword)
```
在这个例子中,我们首先定义了一个包含关键字和文件名的字典`keywords`。然后,我们定义了一个名为`test_file_contains_keyword`的函数,它接受一个关键字作为参数,并在相应的文件中查找该关键字。最后,我们使用`parametrize`装饰器来传递多个关键字作为参数,并调用`test_file_contains_keyword`函数进行断言。
Python进行多关键字级联查找
可以使用Python的字典(dictionary)类型,将多个关键字作为字典的键,将对应的值作为字典的值,然后进行查找。
以下是一个示例代码:
```
data = {
('apple', 'red', 'fruit'): 10,
('banana', 'yellow', 'fruit'): 20,
('carrot', 'orange', 'vegetable'): 30
}
def search(*keywords):
for key, value in data.items():
if all(kw in key for kw in keywords):
return value
return None
result = search('apple', 'red', 'fruit')
print(result) # 输出: 10
result = search('banana', 'yellow', 'vegetable')
print(result) # 输出: None
```
在示例中,我们将多个关键字作为元组作为字典的键,将对应的值作为字典的值。然后定义了一个`search`函数,接受多个关键字作为参数,使用`all`函数判断所有关键字是否都存在于字典的键中,如果都存在,则返回对应的值,否则返回None。
阅读全文