开发者社区> 问答> 正文

多模式替换以及python中的空格

输入:-“好&&吐司&&来宾&快&慢||风||旧||新||非常好” 要求:-用“ and”替换“ &&”(类似地用“ or”替换“ ||”),所以我在上面的输出 输出应如下所示:-“好吃,好吃,好客,快,慢||风||旧||新的或很好”

我试图做的事:

import re

new_ = {
                                '&&':'and',
                                '||':'or'
}

inpStr = "good && toast&&guest &fast& slow||wind ||old|| new || very good"
replDictRe = re.compile( r'(\s%s\s)' % '\s|\s'.join(map(re.escape, new_.keys())))
oidDesStr = replDictRe.sub(lambda mo:new_.get(mo.group(),mo.group()), inpStr)
print(oidDesStr)

问题来源:stackoverflow

展开
收起
is大龙 2020-03-24 21:50:05 479 0
1 条回答
写回答
取消 提交回答
  • 您可以使用

    replDictRe = re.compile( r'(?<!\S)(?:{})(?!\S)'.format('|'.join(map(re.escape, new_.keys()))) )
    

    请参见在线Python演示和regex演示。

    (?<!\ S)(?:&& |||)(?!\ S)模式表示

    • ` (?<!\S) ` - matches a location not immediately preceded with a non-whitespace char (aka left-hand whitespace boundary)
    • ` (?:&&|||) ` - either a ` && ` or ` || ` character substring
    • ` (?!\S) ` - a location not immediately followed with a non-whitespace char (aka right-hand whitespace boundary).

    回答来源:stackoverflow

    2020-03-24 21:50:12
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载