【问题标题】:How would I search and replace multiple regexes using python re [duplicate]我将如何使用 python re 搜索和替换多个正则表达式 [重复]
【发布时间】:2011-11-25 09:45:59
【问题描述】:

可能重复:
Python replace multiple strings

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

这是由re.search 处理,因为我希望能够搜索文本中的任何位置,还是使用re.sub

处理此问题的最佳方法是什么?我找到了一些零碎的东西,但没有找到处理多个正则表达式的地方。

【问题讨论】:

  • 如果您将一个常量字符串替换为另一个,则无需使用正则表达式。
  • 您是从某处复制/粘贴这些引号,还是在浏览器的文本框中输入了匹配的引号?
  • 当然是复制粘贴

标签: python regex


【解决方案1】:
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)

注意:'|'在括号之间失去了它的特殊性

【讨论】:

    【解决方案2】:

    如果您只需要替换单个字符,则可以使用str.translate():

    import string
    
    table = string.maketrans(';|', ',,')
    deletechars = ' \r\n<>\'"'
    
    print "ex'a;m|ple\n".translate(table, deletechars)
    # -> exa,m,ple
    

    【讨论】:

    • 哦,是的!就是这样!
    【解决方案3】:

    如果您想删除所有出现的这些字符,只需将它们全部放在一个字符类中并执行re.sub()

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

    您必须为每个替换规则致电re.sub()

    【讨论】:

    • 所以 your_str 将是字符类的一个实例?不知道你的意思是“把它们都放在一个字符类中
    • 阅读this tutorial了解更多信息。这是基本的正则表达式。
    • +1 考虑在括号后加“+”(我忘了)
    猜你喜欢
    • 1970-01-01
    • 2014-04-20
    • 2010-10-30
    • 1970-01-01
    • 2022-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-14
    相关资源
    最近更新 更多