我正在处理包含txt文件的tar.gz文件中的文件,并尝试提取其TarInfo
属性如下的相关member.name
对象的文件名:
aclImdb/test/neg/1026_2.txt
aclImdb/test/neg/1027_5.txt
...
aclImdb/test/neg/1030_4.txt
我编写了以下代码,该代码显示字符串test/neg/1268_2
regex = '\/((?:[^/]*/).*?)\.'
with tarfile.open("C:\\Users\\Orestis\\Desktop\\aclImdb_v1.tar.gz") as archive:
for member in archive.getmembers():
if member.isreg():
m = re.findall(regex, member.name)
print(m)
如何修改正则表达式以仅提取文件名的1268_2
部分?实际上,我想在"/"
的第3次出现之后和"."
的第1次出现之前提取字符串。
答案 0 :(得分:2)
您可以对此进行硬编码:
.*?\/.*?\/.*?\/(.*?)\.
更优雅的是:
(.*?\/){3}(.*?)\.
您可以简单地更改3以适合您的样式。 (请注意,您要的组是2美元)