【问题标题】:replacing a string with other but not the substring用其他而不是子字符串替换字符串
【发布时间】:2016-12-07 07:21:35
【问题描述】:
BCXADServer() : Server(), m_bBet(false) {}

我想将 Server() 替换为它所在的位置,而不是像 BCXADServer() 这样的任何其他地方

所以想要的输出是 -

BCXADServer() : <some-string>, m_bBet(false) {}

但我得到了

BCXAD<some-string> : <some-string>, m_bBet(false) {}

这两个地方都在替换。

像这样,它位于文件中的多个位置。

我确实尝试过 re.sub 和 replace() 方法,但它总是替换所有地方而不是所需的位置。

请帮我解决这个问题。

【问题讨论】:

  • 你可以这样做:&gt;&gt;&gt; your_string.replace(' Server()','&lt;other-string&gt;')

标签: python regex python-2.7 python-3.x substring


【解决方案1】:

使用regex\b 来匹配工作边界,因此如果它在另一个单词的子字符串中,它将不会匹配该单词

import re
s = 'BCXADServer() : Server(), m_bBet(false) {}'
re.sub(r'\bServer\(\)', 'XXX', s)  # replace Server() with XXX
# 'BCXADServer() : XXX, m_bBet(false) {}'

【讨论】:

    【解决方案2】:

    您可以使用不同的方式将您的输入替换为您想要的字符串。

    例如:

    使用正则表达式:

    import re
    my_input_string = "BCXADServer() : Server(), m_bBet(false) {}"
    pattern = r'\bServer\(\)'
    to_replace = "<some-string>"
    replaced_string = re.sub(pattern, to_replace, my_input_string)
    print(replaced_string)
    

    输出:

    BCXADServer() : <some-string>, m_bBet(false) {}
    

    分割你的字符串并使用replace():

    my_input_string = "BCXADServer() : Server(), m_bBet(false) {}"
    
    def replace_string(input_string = "", replace_string = ""):
        b = list(input_string.split(":"))
        return ":".join([b[0], b[1].replace("Server()", replace_string)])
    
    replaced_string = replace_string(my_input_string, "<some-string>")
    print(replaced_string)
    

    输出:

    BCXADServer() : <some-string>, m_bBet(false) {}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-21
      • 2023-03-19
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      相关资源
      最近更新 更多