python - 创建一个能够从目录名称中提取特定元素的函数?
问题描述
我需要创建一个能够从目录名称中提取某些信息的函数。对于这种情况,我正在使用 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
解决方案
如果您的所有文件都以相同的方式写入(文件路径 - 名称 - 日期),您可以使用“-”拆分 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 值的
推荐阅读
- android - 我需要建议如何在 android 中实现这种 UI?
- angular8 - Angular 8 中的 HttpInterceptor 问题 - 未触发 HTTPInterceptor
- javascript - 根据参数注入正确的服务
- java - Gradle 多模块。使用来自另一个模块的 EventListener 检查第一个模块的上下文
- xslt - XPath 根据子值选择元素
- python - 如何在 spark rdd 中执行 vlook up
- node.js - 未找到未定义的包
- logstash - Logstash 将字符串解析为具有多个字段的单个事件
- html - 如何使图像重复而不是拉伸?
- python - 如何按日期和度量字段分组以计算排名?