ipython,找到特定的目录

2024-10-03 15:33:33 发布

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

我用ipython5.1.0做了一些(初学者)编程。你知道吗

大约有100个目录的名称如下 Mix_XFUEL_0.5_XOXID_0.6_PHI_0.2,只有数字在变化。你知道吗

我使用fnmatch将名称读入程序。 现在我需要所有目录,其中前两个数字(在XFUELXOXID后面)是相同的,如:

Mix_XFUEL_0.5_XOXID_0.5_PHI_0.2
Mix_XFUEL_0.5_XOXID_0.5_PHI_0.4
Mix_XFUEL_0.5_XOXID_0.5_PHI_0.6

但也

Mix_XFUEL_0.6_XOXID_0.6_PHI_0.2
Mix_XFUEL_0.6_XOXID_0.6_PHI_0.4
Mix_XFUEL_0.6_XOXID_0.6_PHI_0.6

我试过:

i = '0.5'  
fnmatch.fnmatch(file, 'Mix_XFUEL_'i'_XOXID_'i'_PHI_*'):  

但这行不通。你知道吗

怎么做?你知道吗


Tags: 程序目录名称编程数字filephimix
2条回答

使用regex,第二个捕获组(\1)断言它需要匹配第一个捕获组(\d+(?:\.\d+)?)

(\d+(?:\.\d+)?)匹配任何小数或带小数点的数字

import re
re.match(r'Mix_XFUEL_(\d+(?:\.\d+)?)_XOXID_(\1)_PHI', infile)

这将匹配

  • “混合燃料0.5 XOXID 0.5 PHI 0.2”
  • “混合燃料0.6 x氧化物0.6 PHI 0.2”
  • “混合燃料5×氧化物5×功率因数0.2”

但不是

  • “混合燃料0.5×氧化物0.6×功率因数0.2”
import os, re
from collections import defaultdict

results = defaultdict(list)
for file in os.listdir('/path/to/your/directory'):
    m = re.match(r'Mix_XFUEL_(.*?)_XOXID_(.*?)_PHI_.*', file)
    if m:
        numbers = m.group(1,2)
        results[numbers].append(file)

for r in results:
    print(results[r])

相关问题 更多 >