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

0 投票
3 回答
688 浏览
提问于 2025-04-17 03:07

可能重复的问题:
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

撰写回答