我有一个tar文件,其名称我已成功读取并存储在变量
中tarname = 'esarchive--Mona-AB-Test226-8037affd-06d1-4c61-a91f-816ec9cb825f-05222017-4.tar'
但是如何从这个文件名中提取“Mona”并将其存储在变量中?
(对于所有tar文件,tar文件的文件名结构与上面的名称相同,其名称在“ es-archive - {Name} -AB ”之后出现,所以返回的解决方案任何遵循这种格式的名称)
谢谢!
答案 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)
我能想到的最简单方法:
-
字符上拆分文件名。在代码中:
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'