从文件名中提取名称子字符串并将其存储在Python中的变量中

时间:2017-05-31 18:15:14

标签: python

我有一个tar文件,其名称我已成功读取并存储在变量

tarname = 'esarchive--Mona-AB-Test226-8037affd-06d1-4c61-a91f-816ec9cb825f-05222017-4.tar'

但是如何从这个文件名中提取“Mona”并将其存储在变量中?

(对于所有tar文件,tar文件的文件名结构与上面的名称相同,其名称在“ es-archive - {Name} -AB ”之后出现,所以返回的解决方案任何遵循这种格式的名称)

谢谢!

3 个答案:

答案 0 :(得分:8)

parse模块适用于此类内容。您可以将其视为str.format的倒数。

from parse import parse
pattern = 'esarchive--{Name}-AB-{otherstuff}.tar'
result = parse(pattern, tarname)

演示:

>>> result = parse(pattern, tarname)
>>> result['Name']
'Mona'
>>> result.named
{'Name': 'Mona',
 'otherstuff': 'Test226-8037affd-06d1-4c61-a91f-816ec9cb825f-05222017-4'}

答案 1 :(得分:3)

我能想到的最简单方法:

  1. -字符上拆分文件名。
  2. 从结果列表中获取第3项(索引2)。
  3. 在代码中:

    filename.split('-')[2]
    

    简单的单行。这当然是在你的榜样。我需要更多样本文件名来说明可能的变化,并确定这是否一直有效。

答案 2 :(得分:1)

>>> import re
>>> tarname = "esarchive--Mona-AB-Test226-8037affd-06d1-4c61-a91f-816ec9cb825f-05222017-4.tar"
>>> s = re.match("esarchive--(\w+)-AB", tarname).group(1)
>>> s
'Mona'