2011-09-26 50 views
0

可能重複:
Python replace multiple strings如何將搜索和替換使用python多個正則表達式重新

我尋找替代「 「「\r」「\n」「<」「>」「’」(單報價)和‘」’(雙引號)與「」(空)。我還打算用「,」替換「;」「|」

這會被re.search,因爲我希望能夠在任何地方文本搜索,或者我會用re.sub處理。

什麼是最好的處理方法?我發現了點點滴滴,但沒有處理多個正則表達式。

+0

如果要更換一個常量字符串與另一個,就沒有必要使用正則表達式。 –

+0

您是從某處複製/粘貼這些引號還是實際上在瀏覽器的文本框中輸入了匹配的引號? – agf

+0

當然複製和粘貼 – kamal

回答

4

如果您需要更換僅單個字符之間的專業,那麼你可以使用str.translate()

import string 

table = string.maketrans(';|', ',,') 
deletechars = ' \r\n<>\'"' 

print "ex'a;m|ple\n".translate(table, deletechars) 
# -> exa,m,ple 
+0

ooooh yes!那就是做什麼! – eyquem

4

如果要刪除這些字符的所有事件,只是把它們放在一個字符類,做re.sub()

your_str = re.sub(r'[ \r\n\'"]+', '', your_str) 
your_str = re.sub(r'[;|]', ',', your_str) 

你必須調用re.sub()針對全部替換規則。

+0

so your_str會是字符類的一個實例嗎?不知道你的意思是什麼「,把它們全部放在字符類 – kamal

+0

閱讀[本教程](http://www.regular-expressions.info/charclass.html)瞭解更多信息。這是基本的正則表達式。 –

+0

+ 1因爲有想過把'+'放在括號後面(我忘記了) – eyquem

0
import re 

reg = re.compile('([ \r\n\'"]+)|([;|]+)') 

ss = 'bo ba\rbu\nbe\'bi"by-ja;ju|jo' 

def repl(mat, di = {1:'',2:','}): 
    return di[mat.lastindex] 

print reg.sub(repl,ss) 

注意:'|'失去了它的支架

相關問題