这就是它:
str_ = 'file_.csv_.csv.bz2'
re.sub(regex, '', str_)我想要'regex‘值来获取'file_.csv_',即没有实际扩展名的文件名,这里是'.csv.bz2',可以是'.csv.*',而.* = ''|bz2|gz|7z|...任何压缩格式。
更准确地说,我希望re.sub从str_的末尾以最贪婪的方式进行匹配。使用regex = '\.csv.*$',我只能得到'file_'。
我当然可以做os.path.splitext() -检查str_是否以'.csv' - os.path.splitext()结尾,如果是的话,有没有更短的方法呢?
发布于 2014-07-18 00:34:37
您可以使用后缀的re.split()拆分:
result = re.split(r'\.csv(?:\.\w+)?$', filename)[0]演示:
>>> import re
>>> filename = 'file_.csv_.csv.bz2'
>>> re.split(r'\.csv(?:\.\w+)?$', filename)[0]
'file_.csv_'
>>> re.split(r'\.csv(?:\.\w+)?$', 'foobar_.csv_.csv')[0]
'foobar_.csv_'
>>> re.split(r'\.csv(?:\.\w+)?$', 'foobar_.csv_.csv.gz')[0]
'foobar_.csv_'https://stackoverflow.com/questions/24808900
复制相似问题