![](/img/trans.png)
[英]How to add repeats of the same element to list by comparing index in Python?
[英]How to find the index of a list element by comparing it to a string in Python?
假設我有一個包含一些文件的列表,如下所示:
file_list = ['folder\\text.txt', 'folder\\data.csv', 'folder\\picture.png']
並且還聲明了一個字符串:
file = 'text.txt' #Did not include 'folder\\', intentionally.
如何使用“文件”變量獲取 file_list 的索引?
我嘗試了以下方法:
index = file_list.index(file)
filename = file_list[index]
print(filename)
但是,我得到了這個結果:
ValueError: 'text.txt' is not in list
我已經理解為什么我的解決方案失敗了,但是是否有一個有效的解決方案可以通過使用字符串變量來獲取索引?
這將幫助你:)
file_list = ['folder\\text.txt', 'folder\\data.csv', 'folder\\picture.png']
file = 'data.csv'
flag = True
for i in range(len(file_list)):
if(file_list[i].find(file)!=-1):
print("file found at {} position in the list".format(i))
flag = False
break
if flag:
print ("File not found :(")
OUTPUT:
file found at 0 position in the list
鑒於您不想使用os
模塊(正如您在評論中所說),只需實現一個基於 split 的基本基本basename
func。
然后,您可以使用簡單的理解來創建一個僅包含文件名的匹配列表,並在其中查找索引。
def basename(path):
return path.split('\\')[-1]
file_list = ['folder\\text.txt', 'folder\\data.csv', 'folder\\picture.png']
file = 'text.txt'
file_basename_list = [basename(f) for f in file_list]
index = file_basename_list.index(file)
filename = file_list[index]
print(filename)
Output:
folder\text.txt
您應該檢查file_list
的每個元素以找出file
的索引:
def find_index(file, file_list):
for idx, file_name in enumerate(file_list):
if file in file_name:
print(f"idx:{idx}, file_name:{file_name}")
return idx
if __name__ == '__main__':
file_list = ['folder\\text.txt', 'folder\\data.csv', 'folder\\picture.png']
file = 'text.txt'
idx = find_index(file, file_list)
if idx:
print(file_list[idx])
else:
print(f"Couldn't find idx of {file} ")
Output:
idx:0, file_name:folder\text.txt
folder\text.txt
直接的方法是:
file_list = ['folder\\text.txt', 'folder\\data.csv', 'folder\\picture.png']
search_file = 'text.txt'
base_path = "folder\\"
def find_file(file_list, search_file, base_path):
for idx, file in enumerate(file_list):
if file == base_path+search_file:
return idx
return "File Not Found"
print(find_file(file_list, search_file, base_path))
如果要動態添加base_path
,請使用:
import os.path
path = 'folder\\'
base_path = os.path.basename(path)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.