我希望替换“ “
,“\r”
,“\n”
,“<”
,“>”
,“’”
(单引号)和{ {1}}(双引号)‘”’
(空)。我还希望将“”
和“;”
替换为“|”
。
这会由“,”
处理,因为我希望能够在文本中的任何位置进行搜索,或者我会使用re.search
。
处理此问题的最佳方法是什么?我找到了点点滴滴,但没有处理多个正则表达式。
答案 0 :(得分:4)
如果要删除所有出现的字符,只需将它们全部放入字符类中并执行re.sub()
your_str = re.sub(r'[ \r\n\'"]+', '', your_str)
your_str = re.sub(r'[;|]', ',', your_str)
您必须为每个替换规则致电re.sub()
。
答案 1 :(得分:4)
如果您只需要替换单个字符,则可以使用str.translate()
:
import string
table = string.maketrans(';|', ',,')
deletechars = ' \r\n<>\'"'
print "ex'a;m|ple\n".translate(table, deletechars)
# -> exa,m,ple
答案 2 :(得分: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)
注意:'|'失去了括号之间的专长