我如何使用python re搜索和替换多个正则表达式

时间:2011-09-26 17:25:58

标签: python regex

  

可能重复:
  Python replace multiple strings

我希望替换“ ““\r”“\n”“<”“>”“’”(单引号)和{ {1}}(双引号)‘”’(空)。我还希望将“”“;”替换为“|”

这会由“,”处理,因为我希望能够在文本中的任何位置进行搜索,或者我会使用re.search

处理此问题的最佳方法是什么?我找到了点点滴滴,但没有处理多个正则表达式。

3 个答案:

答案 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)

注意:'|'失去了括号之间的专长