【问题标题】:Conditional string replacement条件字符串替换
【发布时间】:2021-10-08 22:58:36
【问题描述】:

我需要根据条件替换一个字符串: 我需要用变量string1 上的变量new_term 替换变量term,但前提是我们之前没有"IS_ADDITIF{{""IS_FUN_ADDITIF{{"

这是一个例子:

term = "DIGLYCERIDES"

new_term =  "IS_ADDITIF{{DIGLYCERIDES}},"

string1 : " FOOD ADDITIVES DIGLYCERIDES  (DIGLYCERIDES  IS_ADDITIF{{DIGLYCERIDES}}, IS_FUN_ADDITIF{{DIGLYCERIDES}}, DIGLYCERIDES     )"

newstring1= string1.replace(term, new_term)

结果如下:

newstring1 = " FOOD ADDITIVES IS_ADDITIF{{DIGLYCERIDES}} (IS_ADDITIF{{DIGLYCERIDES}} IS_ADDITIF{{DIGLYCERIDES}}, IS_FUN_ADDITIF{{DIGLYCERIDES}}, IS_ADDITIF{{DIGLYCERIDES}} )"

【问题讨论】:

    标签: python regex regexp-replace


    【解决方案1】:

    您可以使用正则表达式和两个后续的否定后向断言,然后使用 re.sub 替换匹配项

    >>> import re
    >>> re.sub('(?<!IS_ADDITIF\{\{)(?<!IS_FUN_ADDITIF\{\{)'+term, new_term, string1)
    
    ' FOOD ADDITIVES IS_ADDITIF{{DIGLYCERIDES}},  (IS_ADDITIF{{DIGLYCERIDES}},  IS_ADDITIF{{DIGLYCERIDES}}, IS_FUN_ADDITIF{{DIGLYCERIDES}}, IS_ADDITIF{{DIGLYCERIDES}},     )'
    

    了解模式:'(?&lt;!IS_ADDITIF\{\{)(?&lt;!IS_FUN_ADDITIF\{\{)'+term

    (?<!IS_ADDITIF\{\{)       : String doesn't start with IS_ADDITIF{{
    (?<!IS_FUN_ADDITIF\{\{)   : String doesn't start with IS_FUN_ADDITIF{{
    term                      : Matching the value in term i.e. DIGLYCERIDES
    

    【讨论】:

      猜你喜欢
      • 2014-03-13
      • 2014-08-17
      • 2015-02-02
      • 1970-01-01
      • 2011-10-03
      • 2012-06-12
      • 2021-10-19
      • 2013-11-19
      相关资源
      最近更新 更多