从长列表的数据集中的Python(或Bash)提取文件名的一部分

2024-10-03 17:26:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据集列表,我需要从中提取一部分文件名以放入另一个程序。很明显,我不想手动复制和粘贴所有文件名,因为这需要很长时间。有没有一种简单的方法可以使用python或bash脚本来实现这一点。你知道吗

文件名示例如下:

mc12_8TeV.156945.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_110_90-Nominal_Nominal_ISR_ThreeLep.root
mc12_8TeV.156946.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_112_5_12_5-Nominal_Nominal_ISR_ThreeLep.root

我需要提取这些部分:

156945.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_110_90
156946.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_112_5_12_5

我需要知道如何将文件名加载到python中,然后如何提取其中的一部分。你知道吗


Tags: 数据方法程序列表粘贴文件名root手动
1条回答
网友
1楼 · 发布于 2024-10-03 17:26:27

在bash中,你可以使用cut或sed,看看这个人。 在Python中,可以使用split()和replace()方法

https://docs.python.org/2/library/stdtypes.html?highlight=split#str.split

Python方式:

filename = "mc12_8TeV.156945.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_110_90-Nominal_Nominal_ISR_ThreeLep.root"

print(filename.replace("mc12_8TeV.", "").replace("-Nominal_Nominal_ISR_ThreeLep.root","")

猛击方式:

echo "mc12_8TeV.156945.MadGraphPythia_AUET2BCTEQ6L1_DGN2N3Slep_110_90-Nominal_Nominal_ISR_ThreeLep.root" | sed "s/mc12_8TeV\.//g" | sed "s/-Nominal_Nominal_ISR_ThreeLep\.root//g" 

相关问题 更多 >