Python提取文件名正则表达式的一部分

标签 python regex python-3.x

我是 Python 新手,正在尝试分析一些数据。因此,我将文件夹中的所有 csv 文件导入并连接到一个数据框中。我正在尝试提取文件名的一部分以用作 header ,经过搜索后,我发现您通常会使用正则表达式。

文件名如下:'Varying Concentration2_20190712-145158_Base Media.csv' , 'Varying Concentration2_20190712-145158_250 g per l.csv' , ETC 所以我试图提取的部分是在 _ 之后在 .csv 之前。

我已经尝试过:

for fname in all_data:
    res = re.findall("(?<=_)(\w+).csv$", fname)
    if not res: continue
    print (res)

还有"(?<=[0-9]+_)(\w+)" 但它似乎不起作用。

所需的输出将是一个包含 'Base Media' 的列表, '150g per l '等等。

最佳答案

这是一个避免正则表达式的选项,而是使用基本 split 字符串函数两次:

filename = 'Varying Concentration2_20190712-145158_Base Media.csv'
parts = filename.split('_')
nameonly = parts[len(parts)-1].split('.')[0]
print(nameonly)

输出:

Base Media

如果完整文件名也可能包含点,则可能需要调整此答案。

关于Python提取文件名正则表达式的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57110503/

相关文章:

regex - 将单词与文本的正则表达式(在开头、结尾或中间)匹配

c# - 在另一个字符串中查找特定字符串,但不会得到类似的结果

python - 如何编写一个无限循环来接收UDP数据?

python - 带有 pageToken 的 GMail API : threads(). 列表丢失了结果中的一些线程

python - 如何终止由 Python subprocess.Popen() 创建的进程

ruby-on-rails - 尝试使用 Regex 验证模型中的字段。适用于 Rubular 但不适用于我的验证

python - 如何显示指定目录中的文件列表

python - 在python中使用xlrd从xls中提取数据

python - 将 max 与 'get' 方法一起用于字典

在 Windows 上安装 python 安全更新