我正在尝试使用列表推导仅打印包含子字符串.pdf
的字符串。
这是导致语法错误的代码行。
list_of_files = [x if ".pdf" in x for x in list_of_files]
列表list_of_files
包含.pdf
和.docx
文件供参考。它们是使用os.listdir
收集的。
此for
循环工作正常,但我更希望使用列表理解。
for x in list_of_files:
if ".pdf" in x:
print(x)
谢谢您的帮助!
答案 0 :(得分:1)
print(list(x for x in list_of_files if '.pdf' in x))
答案 1 :(得分:1)
您不需要<div>
。只需print(x)
就能完成工作。
x
输出:
list_of_files = ['test.pdf','doc.docx','yolo.pdf']
pdfs = [x for x in list_of_files if '.pdf' in x]
print(pdfs)
如果需要过滤列表,则需要在['test.pdf', 'yolo.pdf']
循环之后指定 if
条件(这是您要尝试执行的操作)。如果只需要条件检查项目,则可以在for
循环之前使用if with else
。循环前的for
绝对需要if
。
else
答案 2 :(得分:1)
pdf_files = [x for x in file_list if ".pdf" in x]
您的if语句需要在结尾处,因为这是对它进行逻辑评估的时间。我不确定if语句是否一开始就可以工作,只是在将列表对象扩展为单个值之前,没有if语句是没有道理的。
正如接受的答案中指出的那样,您可以在列表理解循环的开始处使用,但是,您需要在结尾处提供else语句(以捕获所有散乱的人)。在这种情况下,这不合适,因为您只想在新列表中包含这些值以包含.pdf并丢弃其他值。