读取文件名并将该名称的一部分应用于variab

2024-04-24 07:18:16 发布

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

我希望筛选目录中的文件,然后将filename(我试图匹配更改的值)的一部分赋给一个变量。filename的结构与下面的示例一致。 *test file on part-of-filename-of-interest.csvfilename的最后一部分是我想添加到变量值的部分。所以它总是文件名的最后一部分,在单词on之后。你知道吗

我可以使用下面的方法过滤所有感兴趣的文件,但是我不确定如何抓住part-of-filename-of-interest部分将其放置到一个变量值。你知道吗

for root, dirs, files in os.walk('dirpath'):
    filters = '*test file on*.csv'
    for filename in fnmatch.filter(files, filters):
        print filename    #I get all the files im interested in but I dont know how to capture the relevant part of the filename to place it in a variable

Tags: 文件ofcsvthetointestfor
3条回答

取决于你的模式的一致性,这对你有用吗?你知道吗

>>> fn = 'test file on part-of-filename-of-interest.csv'
>>> import os
>>> os.path.splitext(fn[fn.find('test file on') + 13:])[0]
'part-of-filename-of-interest'

如果无法使用fnmatch访问所需内容,那么最简单、最快的解决方案可能是string方法:

print filename.partition('on')[2]

尝试使用正则表达式来匹配所需的部分。你知道吗

import re
p = re.compile("(?<=on ).+")
filename = "*test file on part-of-filename-of-interest.csv"
new_filename = p.search(filename).group(0)

如果不希望包含.csv,请将regex表达式更改为:

p = re.compile("(?<=on ).+(?=.csv)")

这是向前看和向后看的一个很好的例子。你知道吗

相关问题 更多 >