删除字符串的开头,直到特定字符的第一个实例为止



我有一个脚本,它编译一个.exe文件并运行该.exe的--tree=all。这将返回存储文件的目录,我想使用该路径来运行它。

这是我从--tree=all 得到的输出

| | +-outwindows-x86-MD-mbcs-vs2008-relbinVisualStudio08-32bit.exe

所以我使用了以下方法来去除特殊字符:

line = re.sub('[|+ -]', '', lines)

这是有效的,但它删除了-的所有实例,结果是:

outwindowsx86MDmbcsvs2008relbinVisualStudio0832bit.exe

但我想得到这个:

outwindows-x86-MD-mbcs-vs2008-relbinVisualStudio08-32bit.exe

如何确保只删除-的第一个实例,而不删除其余实例?

如果您可以依赖名称前面的-,并且您不坚持使用正则表达式:

s = '| | +-outwindows-x86-MD-mbcs-vs2008-relbinVisualStudio08-32bit.exe'
print s.split('-', 1)[1]

输出:outwindows-x86-MD-mbcs-vs2008-relinVisualStudio08-32bit.exe

您需要将替换分为两部分,对于第二部分,将替换次数限制为一次。

line = re.sub('[|+ ]','',lines)
line = re.sub('-','',line, 1)

您可以使用re.sub('^[|+ -]*', '', line)删除行首的特殊字符。

最新更新