用正则表达式检索字符串的子集-python

时间:2019-07-04 20:44:41

标签: python regex string

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","")

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

2 个答案:

答案 0 :(得分:0)

您提供的信息不多,但是从显示的内容来看,您不能仅使用字符串切片吗?

也许是这样的:

>>> 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'
>>> os.path.basename(p)[4:-11]
'this_word'

答案 1 :(得分:0)

您提供的信息不多,但是从显示的内容来看,您不能仅拆分_个字符吗?

也许是这样的:

>>> 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没有下划线,则只剩下一个部分,将不进行任何连接)