为了账号安全,请及时绑定邮箱和手机立即绑定

如何从python中的元组列表中挑选出具有特定扩展名的字符串?

如何从python中的元组列表中挑选出具有特定扩展名的字符串?

青春有我 2022-07-26 16:30:28
我试图在一个元组列表中挑选出所有 .txt 文件,我不知道如何做到这一点。这是列表的样子:list = ('something.docx', 'something.txt')我将如何指示计算机查看列表并选择“something.txt”并打印它(例如)?
查看完整描述

5 回答

?
湖上湖

TA贡献2003条经验 获得超2个赞

您可以使用列表推导仅过滤以 结尾的文本.txt

[i for i in my_list if i.endswith('.txt')]

鉴于您正在使用字符串列表(在您的情况下为元组),您可以在每个元素上使用endswith方法来执行过滤。


查看完整回答
反对 回复 2022-07-26
?
肥皂起泡泡

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


查看完整回答
反对 回复 2022-07-26
?
开满天机

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


查看完整回答
反对 回复 2022-07-26
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

列表理解可能是这里最好的方法,但为了完整起见,这里有一个解决方案filter:


paths = ('something.docx', 'something.txt')


for path in filter(lambda x: x.endswith(".txt"), paths):

    print(path)

给出:


something.txt

主要区别在于它filter返回一个迭代器,因此如果您只需要打印(或者只是不需要存储所有匹配项),这不会在内存中创建另一个列表。


查看完整回答
反对 回复 2022-07-26
?
梦里花落0921

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


查看完整回答
反对 回复 2022-07-26
  • 5 回答
  • 0 关注
  • 143 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号