python:使用正则表达式删除特定字符的第一个实例

时间:2012-07-12 14:27:01

标签: python regex

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

这是我从--tree=all

获得的输出

| | +-out\windows-x86-MD-mbcs-vs2008-rel\bin\VisualStudio08-32bit.exe

所以我使用以下内容去除特殊字符

line = re.sub('[|+ -]','',lines),这有效,但会删除所有insta -

但这导致了这个

out\windowsx86MDmbcsvs2008rel\bin\VisualStudio0832bit.exe

删除-的每个实例,如何确保只删除第一个实例?剩下的就不管用了。

3 个答案:

答案 0 :(得分:1)

您需要将替换分为两个,而第二个将替换为一个替换。

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

答案 1 :(得分:1)

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

s = '| | +-out\windows-x86-MD-mbcs-vs2008-rel\bin\VisualStudio08-32bit.exe'
print s.split('-', 1)[1]
# out\windows-x86-MD-mbcs-vs2008-relin\VisualStudio08-32bit.exe

答案 2 :(得分:0)

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

相关问题