Python:如何在不替换字符串的情况下替换两个字符串之间的所有内容?

Python:如何在不替换字符串的情况下替换两个字符串之间的所有内容?,python,python-2.7,Python,Python 2.7,我有这根绳子 str = ''' // DO NOT REPLACE ME // Anything might be here. Numbers letters, symbols, and other strings. // DO NOT REPLACE ME EITHER // ''' 我想替换这两行之间的任何内容,但我不想替换那些字符串。我该怎么做 >>> s = ''' // DO NOT REPLACE ME

我有这根绳子

str = '''
      // DO NOT REPLACE ME //
      Anything might be here. Numbers letters, symbols, and other strings.
      // DO NOT REPLACE ME EITHER //
      '''
我想替换这两行之间的任何内容,但我不想替换那些字符串。我该怎么做

>>> s = '''
      // DO NOT REPLACE ME //
      Anything might be here. Numbers letters, symbols, and other strings.
      // DO NOT REPLACE ME EITHER //
      '''
>>> print(s)

      // DO NOT REPLACE ME //
      Anything might be here. Numbers letters, symbols, and other strings.
      // DO NOT REPLACE ME EITHER //
>>> import re
>>> start = '// DO NOT REPLACE ME //'
>>> end = '// DO NOT REPLACE ME EITHER //'
>>> replacement = 'stuff'
>>> match = re.match(r'(.+%s\s*).+?(\s*%s.+)' % (start, end), s, re.DOTALL)
>>> match.groups()
('\n      // DO NOT REPLACE ME //\n      ', '\n      // DO NOT REPLACE ME EITHER //\n      ')
>>> new = match.group(1) + replacement + match.group(2)
>>> print(new)

      // DO NOT REPLACE ME //
      stuff
      // DO NOT REPLACE ME EITHER //
如果
start
end
包含特殊的正则表达式字符,则可能会导致问题。在这种情况下,他们没有

start = s.find('// DO NOT REPLACE ME //') + len('// DO NOT REPLACE ME //')
end = s.find('// DO NOT REPLACE ME EITHER //')
new_string = s[:start] + replacement + s[end:]

我希望它有帮助

这不起作用,因为它不是基于行的。OP希望替换两行之间的内容。@如果是这种情况,我想您可以执行
new\u string=“”。加入([s[:start],'\n',replacement,'\n',s[end:])