擅长:python、mysql、java
<p>正如在对您的问题的评论中所提到的,您需要避开那些不属于需要格式化的部分的花括号。以下是您遇到的问题的示例解决方案:</p>
<pre><code>Python 3.6.2 (v3.6.2:5fd33b5, Jul 8 2017, 04:57:36) [MSC v.1900 64 bit (AMD64)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> sed_str = 's#PROJECT_DIR=\$\{PROJECT_DIR:-.*\}#PROJECT_DIR=\$\{PROJECT_DIR:-{0}\}#'
>>> print(sed_str)
s#PROJECT_DIR=\$\{PROJECT_DIR:-.*\}#PROJECT_DIR=\$\{PROJECT_DIR:-{0}\}#
>>> sed_str = 's#PROJECT_DIR=\$\{{PROJECT_DIR:-.*\}}#PROJECT_DIR=\$\{{PROJECT_DIR:-{0}\}}#'.format('filename')
>>> print(sed_str)
s#PROJECT_DIR=\$\{PROJECT_DIR:-.*\}#PROJECT_DIR=\$\{PROJECT_DIR:-filename\}#
>>>
</code></pre>
<p>如果您有最新版本的Python,您可能需要考虑使用<code>f''</code>字符串来创建<code>sed_str</code>变量:</p>
<pre><code>>>> path = 'filename'
>>> sed_str = f's#PROJECT_DIR=\$\{{PROJECT_DIR:-.*\}}#PROJECT_DIR=\$\{{PROJECT_DIR:-{path}\}}#'
>>> print(sed_str)
s#PROJECT_DIR=\$\{PROJECT_DIR:-.*\}#PROJECT_DIR=\$\{PROJECT_DIR:-filename\}#
>>>
</code></pre>