如何使用Python re搜索和替换多个正则表达式
可能重复的问题:
Python 替换多个字符串
我想把这些字符替换掉:“ “
(空格)、“\r”
(回车)、“\n”
(换行)、“<”
(小于号)、“>”
(大于号)、“’”
(单引号)和‘”’
(双引号),都替换成“”
(空)。另外,我还想把“;”
和“|”
替换成“,”
(逗号)。
我应该用re.search
来处理吗?因为我想在文本的任何地方都能搜索,还是应该用re.sub
呢?
处理这个问题的最佳方法是什么?我找到了一些零碎的信息,但没有找到处理多个正则表达式的完整方法。
3 个回答
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)
注意:在括号里面,'|' 这个符号就失去了它特别的意义。
4
如果你想把这些字符全部去掉,只需要把它们放在一个字符类里,然后使用 re.sub()
这个函数。
your_str = re.sub(r'[ \r\n\'"]+', '', your_str)
your_str = re.sub(r'[;|]', ',', your_str)
你需要对每一个替换规则都调用一次 re.sub()
。
4
如果你只需要替换单个字符,可以使用 str.translate()
这个方法:
import string
table = string.maketrans(';|', ',,')
deletechars = ' \r\n<>\'"'
print "ex'a;m|ple\n".translate(table, deletechars)
# -> exa,m,ple