首页 > 解决方案 > 使用正则表达式检索字符串的子集 - python

问题描述

p = "\home\gef\Documents\abc_this_word_dfg.gz.tar"

我正在寻找一种方法来检索this_word.

base = os.path.basename(p)
base1 = base.replace("abc_","")
base1.replace("_dfg.gz.tar","")

这行得通,但这并不理想,因为我需要提前知道要删除哪些字符串。也许 aregex在这里合适?

标签: pythonregexstring

解决方案


您没有提供太多信息,但是从所显示的内容中您不能仅按_字符拆分吗?

也许是这样的:

>>> p = os.path.join('home', 'gef', 'Documents', 'abc_this_word_dfg.gz.tar')
>>> p
'home/gef/Documents/abc_this_word_dfg.gz.tar'
>>> os.path.dirname(p)
'home/gef/Documents'
>>> os.path.basename(p)
'abc_this_word_dfg.gz.tar'
>>> '_'.join(
...     os.path.basename(p).split('_')[1:-1])
'this_word'

它用下划线分割,然后丢弃第一个和最后一个部分,最后用下划线将其他部分连接在一起(如果this_word没有下划线,那么将只剩下一个部分,不会进行连接)。


推荐阅读