根据Python中的子字符串捕获文件名作为变量

问题描述 投票:0回答:2

我在

python
中有以下场景。我想检查当前工作目录和该目录中存在的文件并创建一个变量。

我已经做了如下

import os

# current working directory
print(os.getcwd())

# files present in that directory
dir_contents = os.listdir('.')


# below is the output of the dir_contents

print(dir_contents)
['.test.json.crc', '.wf_list_dir_param.py.crc', 'test.json', 'wf_list_dir_param.py']

现在,我想从

dir_contents
列表中提取
wf_list_dir
作为变量。

我需要做以下事情

1) find out the elements that start with `wf` and end with `param.py`
2) extract everything before `_param.py` as a variable 

我该怎么做?

python
2个回答
0
投票

以下是如何使用 Python 实现目标的方法:

import os

current_dir = os.getcwd()
print("Current Directory:", current_dir)

dir_contents = os.listdir('.')
print("Directory Contents:", dir_contents)

filtered_files = [f for f in dir_contents if f.startswith('wf') and f.endswith('param.py')]

# Extract everything before '_param.py'
variables = [f.split('_param.py')[0] for f in filtered_files]

print("Extracted Variables:", variables)

0
投票

我认为最简单的方法是使用

re
模块,但您也可能只考虑
str.startswith()
str.endswith()
作为起点。

无论如何,给定文件列表,您可以使用像

r"wf_(.+)_param\.py$"
这样的正则表达式模式来识别匹配项并挑选出您想要的部分。

也许喜欢:

import re

filenames = [".test.json.crc", ".wf_list_dir_param.py.crc", "test.json", "wf_list_dir_param.py"]
pattern = re.compile(r"wf_(.+)_param\.py$")
for text in filenames:
    match = pattern.search(text)
    if match:
        print(match.group(1))   
© www.soinside.com 2019 - 2024. All rights reserved.