首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >python从最贪婪的末尾剥离字符串

python从最贪婪的末尾剥离字符串
EN

Stack Overflow用户
提问于 2014-07-18 00:28:55
回答 2查看 95关注 0票数 1

这就是它:

代码语言:javascript
运行
复制
str_ = 'file_.csv_.csv.bz2'
re.sub(regex, '', str_)

我想要'regex‘值来获取'file_.csv_',即没有实际扩展名的文件名,这里是'.csv.bz2',可以是'.csv.*',而.* = ''|bz2|gz|7z|...任何压缩格式。

更准确地说,我希望re.substr_的末尾以最贪婪的方式进行匹配。使用regex = '\.csv.*$',我只能得到'file_'

我当然可以做os.path.splitext() -检查str_是否以'.csv' - os.path.splitext()结尾,如果是的话,有没有更短的方法呢?

EN

回答 2

Stack Overflow用户

发布于 2014-07-18 00:34:37

您可以使用后缀的re.split()拆分:

代码语言:javascript
运行
复制
result = re.split(r'\.csv(?:\.\w+)?$', filename)[0]

演示:

代码语言:javascript
运行
复制
>>> 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_'
票数 2
EN

Stack Overflow用户

发布于 2014-07-18 00:50:42

这将删除所有连续扩展名并仅打印文件名,

代码语言:javascript
运行
复制
>>> s = "file_.csv_.csv.bz2"
>>> m = re.sub(r'[.a-z0-9]+$', r'', s)
>>> m
'file_.csv_'
>>> s = "foobar_.csv_.csv.gz"
>>> m = re.sub(r'[.a-z0-9]+$', r'', s)
>>> m
'foobar_.csv_'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24808900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档