这里是:
str_ = 'file_.csv_.csv.bz2'
re.sub(regex, '', str_)
我希望“regex”值获取'file_.csv_'
,即没有实际扩展名的文件名,此处为'.csv.bz2'
并且可以是'.csv.*'
while .* = ''|bz2|gz|7z|
... 任何压缩格式。
更准确地说,我希望 re.sub
从 str_
的末尾最贪婪地匹配。
使用 regex = '\.csv.*$'
我只会得到 'file_'
。
我当然可以做 os.path.splitext()
- 检查 str_
是否以 '.csv'
结尾 - os.path.splitext()
如果是,但是有更短的方法吗?
最佳答案
您可以使用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_'
关于python 最贪婪地从末尾剥离字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24808900/