5 回答

TA贡献1829条经验 获得超6个赞
你可以试试这个:
L = ('something.docx', 'something.txt', 'foobar.txt')
L2 = [x for x in L if x[-4:]==".txt"]
for i in L2:
print(i)
输出:
something.txt
foobar.txt

TA贡献1786条经验 获得超13个赞
最简单的解决方案是使用 if 语句迭代并提取匹配项
target_strings = [l for l in list if l=='something.txt'] # extract elemnts print(*target_string) # prints all elements
我不知道您是否正在寻找它,但您可以使用任何条件
target_strings = (l for l in list if your_condition) # extract elemnts print(*target_string) # prints all elements

TA贡献1835条经验 获得超7个赞
列表理解可能是这里最好的方法,但为了完整起见,这里有一个解决方案filter:
paths = ('something.docx', 'something.txt')
for path in filter(lambda x: x.endswith(".txt"), paths):
print(path)
给出:
something.txt
主要区别在于它filter返回一个迭代器,因此如果您只需要打印(或者只是不需要存储所有匹配项),这不会在内存中创建另一个列表。

TA贡献1772条经验 获得超6个赞
您应该为此使用该os模块,例如,在这样的列表理解中:
import os
files = ('something.docx', 'something.txt')
extension = '.txt'
all_txt = [
file for file in files if os.path.splitext(file)[1] == extension
]
print(all_txt)
>>> ['something.txt']
注意:不要list用作变量名,因为它是python reserved keyword
添加回答
举报