我有以下文件内容
apples:100
books:100
pens:200
banana:300
我在下面的代码中搜索文件中的字符串:
def search_string(file_search, search_string):
search_output = []
with open(file_search) as f:
for line in f:
if search_string in line:
search_output.append(line)
return search_output
搜索苹果:
search_string("filename", "apples")
有些情况下,我要搜索两个或三个字符串取决于同一个文件中的要求,所以我需要编写单独的函数,或者我们可以实现相同的功能。如果同一个功能可以帮助
对于两个字符串搜索,我有以下代码:
def search_string2(file_search, search_string1, search_strin2):
search_output = []
with open(file_search) as f:
for line in f:
if search_string1 in line or search_string2 in line:
search_output.append(line)
return search_output
答案 0 :(得分:2)
您可以使用varargs在单个函数中实现此功能,方法是使用前面的*
命名一个参数,该参数会将所有其他位置参数收集到该名称下的tuple
中。然后使用带有生成器表达式的any
来概括测试以覆盖未知数量的搜索字符串:
def search_string(file_search, *search_strings):
search_output = []
with open(file_search) as f:
for line in f:
if any(searchstr in line for searchstr in search_strings):
search_output.append(line)
return search_output
这适用于少量搜索字符串,但如果您需要处理大量搜索字符串,请扫描大量输入或许多小输入,I'd suggest looking at more advanced optimizations, e.g. Aho-Corasick。
答案 1 :(得分:-1)
只需声明string2 = None,然后:
const express= require('express');
const app = express();
app.get('/has-pipe',(req, res) => {
const success = !!res.pipe; // true if res.pipe exists
req.pipe(res) // Readable stream to Writable stream
res.send({ success }); // returns true
})
const port = 3000
app.listen(port, () => console.log(`Example server running on port 3000`))