2014-01-26 37 views
0

我有一個字符串,我想要匹配和替換的子字符串。Python替換不會替換值,因爲我期望

movie.2002.german.720p.x264-msd... 

我想刪除x264-blblxcv。這條線不能按預期工作。

title = title.replace('.x264-\S+','') 
+0

'str.replace' * does *像它應該那樣工作(就像它在作爲文檔聲明一樣) - 即使你不理解它。對於已建立的API,請謹慎處理此類索賠。 – user2864740

回答

8

str.replace()支持正則表達式。您只能用該方法替換文本文本,並且您的輸入字符串不包含文字文本.x264-\S+

使用re.sub() method做你想做什麼:

import re 

title = re.sub(r'\.x264-\S+', '', title) 

演示:

>>> import re 
>>> title = 'movie.2002.german.720p.x264-msd...' 
>>> re.sub(r'\.x264-\S+', '', title) 
'movie.2002.german.720p' 

另外,分區上.x264-str.partition()

title = title.partition('.x264-')[0] 
+0

omg ....謝謝你做到了。 非常感謝你和一個愉快的週末 –

+0

@ Gutz-Pilz記得接受答案,如果你認爲它適合你的需求... –

2

str.replace將不接受正則表達式作爲輸入。也許你想re.sub

import re 
title, pattern = "movie.2002.german.720p.x264-msd...", re.compile("\.x264-\S+") 
print pattern.sub('', title) # or re.sub(pattern, '', title) 

輸出

movie.2002.german.720p 
1

如果你想刪除部分從'.x264'開始,你可以使用statem如下所示:

title=title[:title.find('.x264')]