【发布时间】:2018-04-03 10:10:40
【问题描述】:
从函数中过滤掉数据的正确方法是什么?我应该尝试尽可能地压缩所有内容(search_query),还是应该在每次需要包含新参数时通过列表进行过滤(search_query2)。我有更多的论据,我会更快地变得更加困惑如何处理这个问题。示例:
import os
query = ""
my_path = os.getcwd()
def search_query(query, path, extensions_only=False, case_sensitive=False):
results = []
if extensions_only is True:
for f in os.listdir(path):
if case_sensitive:
if f.endswith(query):
results.append(os.path.join(path, f))
else:
if f.endswith(query):
results.append(os.path.join(path, f).lower())
elif case_sensitive is not True:
for f in os.listdir(path):
if query.lower() in f.lower():
results.append(os.path.join(path, f))
return results
results = search_query("_c", my_path)
print(results)
# Alternative way to deal with this
def search_query2(query, path, extensions_only=False, case_sensitive=False):
results = []
for f in os.listdir(path):
results.append(os.path.join(path, f))
if extensions_only:
filtered_lst = []
for part in results:
if part.endswith(query):
filtered_lst.append(part)
results = filtered_lst
if case_sensitive:
filtered_lst = []
for part in results:
if query in part:
filtered_lst.append(part)
results = filtered_lst
elif not case_sensitive:
filtered_lst = []
for part in results:
if query.lower() in part.lower():
filtered_lst.append(part)
results = filtered_lst
print(results)
return results
search_query2("pyc", my_path, case_sensitive=True)
【问题讨论】:
-
例如,
query和extensions_only是多余的。您应该只有一个可以包含通配符(并且可能默认为“*”?)我猜如果您使用 glob,它也可能使case_sensitive无效。您可以查看stackoverflow.com/questions/3207219/… 了解更多(与此问题没有直接关系)详细信息。
标签: python python-3.x python-2.7 search