首页 > 解决方案 > 创建一个能够从目录名称中提取特定元素的函数?

问题描述

我需要创建一个能够从目录名称中提取某些信息的函数。对于这种情况,我正在使用 dict 列表。我有两个字段(键),其中存储了不同的值,dname(显示文件的路径)和 fname(显示文件的名称)。下面的示例信息已经存储在一个名为 fInfos 的 dict 列表中。

dname="opgh_mini/12345-12345 - James Brown - 28 may 2021 1135 AM", 
fname="textfile.txt"

我说 dict 列表是因为格式实际上是这样的:{ 'dname': 'opgh_mini/12345-12345 - James Brown - 28 may 2021 1135 AM', 'fname': 'textfile.txt },当我在终端中运行它时,它看起来不同。

我的函数需要能够提取目录名称的名称和日期,然后将其放入两个新字段(键)中。它应该看起来像这样。

dname="opgh_mini/12345-12345 - James Brown - 28 may 2021 1135 AM", 
fname="textfile.txt", suser="James Brown", sdate="2021-05-28"

然后我需要将这些结果附加到一个名为 fInfosUpdated 的新列表中。我一开始想使用切片,但后来我意识到并非所有目录名称都具有相同的长度,所以这行不通。有谁知道我怎样才能使这项工作?到目前为止,这是我的代码。

编辑:

def extractInfo(fInfos):
    fInfosUpdated = []
    data = "opgh_mini/12345-12345 - James Brown - 28 may 2021 1135 AM"
    splitted_data = data.split("-")
    date = splitted_data[-1]
    name = splitted_data[-2]
    for dir in fInfos:
        date = datetime.strptime(dir['dname'].split("-")[-1].strip()).strftime('%Y-%m-%D')
        fInfosUpdated.append( {'dname': dir['dname'], 'suser': dir['dname'].split("-")[-2].strip(), 'fname': dir['fname'], 'sdate': date} )
    return fInfosUpdated

标签: pythonlistfunctiondirectory

解决方案


如果您的所有文件都以相同的方式写入(文件路径 - 名称 - 日期),您可以使用“-”拆分 dname 并获取信息。

data = "opgh_mini/12345-12345 - James Brown - 28 may 2021 1135 AM"

splitted_data = data.split("-")
date = splitted_data[-1]
name = splitted_data[-2]

print(date) # ' 28 may 2021 1135 AM' 
print(name) # ' James Brown '

至于你的功能,它应该是这样的:

import datetime

def extractInfo(fInfos):
    fInfosUpdated = []
    for dir in fInfos :
        date = datetime.strptime(dir['dname'].split("-")[-1].strip()).strftime("%Y-%m-%D")
        fInfosUpdated.append({'dname' = dir['dname'], 'suser' = dir['dname'].split("-")[-2].strip(), 'fname' = dir['fname'],'sdate'=date})
    return fInfosUpdated

我不知道你是如何获得 fname 值的


推荐阅读