5 回答

TA貢獻1829條經(jīng)驗 獲得超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條經(jīng)驗 獲得超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條經(jīng)驗 獲得超7個贊
列表理解可能是這里最好的方法,但為了完整起見,這里有一個解決方案filter:
paths = ('something.docx', 'something.txt')
for path in filter(lambda x: x.endswith(".txt"), paths):
print(path)
給出:
something.txt
主要區(qū)別在于它filter返回一個迭代器,因此如果您只需要打印(或者只是不需要存儲所有匹配項),這不會在內(nèi)存中創(chuàng)建另一個列表。

TA貢獻1772條經(jīng)驗 獲得超6個贊
您應(yīng)該為此使用該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
添加回答
舉報