Python 不支持的格式字符';{';

Python 不支持的格式字符';{';,python,Python,我想输出一个我打算与“hiera”一起使用的yaml文件。我想输出如下所示的内容: --- top: '/tmp' package: 'mypackage' version: 1 password: 'cubswin:)' make_audiobook::package_name: "%{hiera('package')}" make_audiobook::version: "%{hiera('version')}" make_audiobook::mp3filesdir: "%{hiera('

我想输出一个我打算与“hiera”一起使用的yaml文件。我想输出如下所示的内容:

---
top: '/tmp'
package: 'mypackage'
version: 1
password: 'cubswin:)'
make_audiobook::package_name: "%{hiera('package')}"
make_audiobook::version: "%{hiera('version')}"
make_audiobook::mp3filesdir: "%{hiera('top')}/%{::appname}/%{::appname}/res/raw"
make_audiobook::app_image::app_image_url: 'http://big/long/path'
make_audiobook::app_image::resource_path:  "%{hiera('top')}/%{::appname}/%{::appname}"
make_audiobook::app_javacode::appname:          "%{::appname}"
make_audiobook::app_javacode::password:         "%{hiera('password')}"
make_audiobook::app_javacode::apptitle:         "The Title of The App"
make_audiobook::app_javacode::package:          "%{hiera('package')}"
make_audiobook::app_javacode::path_to_code:     "%{hiera('top')}/%{::appname}/%{::appname}/src/com/%{hiera('package')}/%{::appname}"
make_audiobook::app_javacode::path_to_androidmanifest:     "%{hiera('top')}/%{::appname}/%{::appname}"
make_audiobook::app_javacode::version:          "%{hiera('version')}"
所以我试过这个

print """
---
top: '%s'
package: '%s'
version: %s
password: '%s'
make_audiobook::package_name: "%{hiera('package')}"
make_audiobook::version: "%{hiera('version')}"
make_audiobook::mp3filesdir: "%{hiera('top')}/%{::appname}/%{::appname}/res/raw"
make_audiobook::app_image::app_image_url: '%s'
make_audiobook::app_image::resource_path:  "%{hiera('top')}/%{::appname}/%{::appname}"
make_audiobook::app_javacode::appname:          "%{::appname}"
make_audiobook::app_javacode::password:         "%{hiera('password')}"
make_audiobook::app_javacode::apptitle:         "%s"
make_audiobook::app_javacode::package:          "%{hiera('package')}"
make_audiobook::app_javacode::path_to_code:     "%{hiera('top')}/%{::appname}/%{::appname}/src/com/%{hiera('package')}/%{::appname}"
make_audiobook::app_javacode::path_to_androidmanifest:     "%{hiera('top')}/%{::appname}/%{::appname}"
make_audiobook::app_javacode::version:          "%{hiera('version')}"
make_audiobook::app_javacode::tracks:
""" % (top, package, version, app_image_url, apptitle)
但我得到了这个错误:

Traceback (most recent call last):
  File "./get_track_titles.py", line 54, in <module>
    """ % (top, package, version, app_image_url, apptitle)
ValueError: unsupported format character '{' (0x7b) at index 88
回溯(最近一次呼叫最后一次):
文件“/get\u track\u titles.py”,第54行,在
“”“%(顶部、软件包、版本、应用程序\u图像\u url、应用程序标题)
ValueError:索引88处不支持的格式字符“{”(0x7b)

您正在使用Python的字符串格式,其中
%
字符告诉它要进行替换(替换的细节由以下一个或多个字符决定)。您还希望在输出中显示一些原始
%
字符,但
%{
在Python看来,似乎您正在尝试进行替换,但在
%
后面有一个不合适的字符


要使
%%
字符出现在输出中,您需要通过将它们加倍来对它们进行转义。表达式
%s%%%s”(“foo”,“bar”)
变成
“foo%bar”

您正在使用Python的字符串格式,其中
%%
字符告诉它要进行替换(替换的详细信息由以下一个或多个字符决定)。您还希望在输出中显示一些原始的
%
字符,但
%{
在Python看来,您似乎在尝试进行替换,但在
%
后面有一个不合适的字符


若要使
%
字符出现在输出中,您需要通过将它们加倍来转义。表达式
%s%%%s”(“foo”,“bar”)
变成
“foo%bar”

您可能想尝试转义
%
{}
char,您缺少
密码
以格式字符串转义
%
%
。@Skycc,
{}
不需要在这里转义。您可能想尝试转义
%
{}
char,您缺少
密码
以格式字符串转义
%
%
。@Skycc,
{}
不需要在这里转义。