-1 在这段代码中是什么意思[file for file in os.listdir(folder_dir) if file.find("xlsx") != -1]?

问题描述

你如何解释代码

[file for file in os.listdir(folder_dir) if file.find("xlsx") != -1]

另外,-1 在这代码中是什么意思?

解决方法

如果字符串中没有出现find,字符串-1函数会自动给出if。所以您的代码正在执行一个条件(xlsx 语句)来检查 str.find 是否在字符串中。

>>> a = '123abc' >>> a.find('a') 3 >>> a.find('Something that is not in the string') -1 >>> 函数用于查找字符串中子字符串的索引。

这是一个例子:

s[start:end]

documentation中所述:

返回在切片 -1 中找到子字符串 sub 的字符串中的最低索引。可选参数 startend 被解释为切片符号。如果未找到 sub,则返回 LocalTime

,

观察代码片段使用 list comprehension 循环遍历 folder_dir 中的文件。

对于每个这样的 file,我们使用 str.find 检查文件名是否包含子字符串 xlsx

如果子串出现在字符串中,则返回出现在字符串中的第一个索引,否则返回-1

来自 Python 文档:

返回字符串中找到子字符串 sub 的最低索引 在切片 s[start:end] 内。可选参数开始和结束是 解释为切片符号。如果未找到 sub,则返回 -1

对于包含 file.find("xlsx") != -1 的任何文件名,条件 True 将为 xlsx,因此文件名将被添加到列表中。

因此,此代码:

[file for file in os.listdir(folder_dir) if file.find("xlsx") != -1]

只是列出 folder_dir 中包含 xlsx 的所有文件。

更一般地,您可能想检查文件名是否以结尾 .xlsx 代替,使用 str.endswith:

[file for file in os.listdir(folder_dir) if file.endswith(".xlsx")]