[英]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.