我试图找到一个文件的扩展名,它的名字是一个字符串。我知道我可以使用函数 os.path.splitext
但如果我的文件扩展名是 .tar.gz
,它不会按预期工作或 .tar.bz2
因为它给出了扩展名 gz
和 bz2
而不是 tar.gz
和 tar.bz2
分别。
所以我决定自己使用模式匹配来查找文件的扩展名。
print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.gz')group('ext')
>>> gz # I want this to come as 'tar.gz'
print re.compile(r'^.*[.](?P<ext>tar\.gz|tar\.bz2|\w+)$').match('a.tar.bz2')group('ext')
>>> bz2 # I want this to come 'tar.bz2'
我正在使用 (?P<ext>...)
在我的模式匹配中,因为我也想获得扩展名。
请帮忙。
最佳答案
root,ext = os.path.splitext('a.tar.gz')
if ext in ['.gz', '.bz2']:
ext = os.path.splitext(root)[1] + ext
<子> 有些人在遇到问题时会想“我知道,我会使用正则表达式”。现在他们有两个问题。
关于python - 在python中使用模式匹配获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6525334/