[英]Python Regular Expression Question
说我有文字“ C:\\ somedir \\ test.log”,我想用“ somedir \\ logs”替换“ somedir”。
所以我想从'C:\\ somedir \\ test.log'转到'C:\\ somedir \\ logs \\ test.log'
我该如何使用re库和re.sub?
到目前为止,我已经尝试过了:
find = r'(C:\\somedir)\\.*?\.log'
repl = r'C:\\somedir\\logs'
print re.sub(find,repl,r'random text ... C:\somedir\test.log more \nrandom \ntext C:\somedir\test.xls...')
但是我只是得到'C:\\ somedir \\ logs'
您应该使用os.path库来执行此操作。 具体来说,是os.path.join和os.path.split 。
这样,它就可以在所有操作系统上运行,并且可以解决一些极端情况。
ikanobori是正确的,但您也不应该将re用于简单的字符串替换。
r'C:\somedir\test.log'.replace('somedir', r'somedir\logs')
您需要引入其他分组,以使替换根据需要进行工作,然后需要使用替换表达式引用该组。 有关另一个示例,请参见Python的re.sub文档 。
尝试:
find = r'C:\\somedir\\(.*?\.log)'
repl = r'C:\\somedir\\logs\\\1'
print re.sub(find,repl,r'random text ... C:\somedir\test.log more \nrandom \ntext C:\somedir\test.xls...')
结果为输出:
'random text ... C:\somedir\logs\test.log more \nrandom \ntext C:\somedir\test.xls...'
好吧,如果您真的想要一种使用正则表达式的方法,请执行以下操作:
find = r'(C:\\somedir\\.*?\.log)'
def repl(match):
return match.groups()[0].replace('somedir', r'somedir\logs')
s = r'random text ... C:\somedir\test.log more \nrandom \ntext C:\somedir\test.xls...'
print re.sub(find, repl, s)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.