2016-12-28 13 views
0

「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 
+0

あなたは '%'と '{}'の文字をエスケープしようとしているかもしれませんし、 'password'がありません – Skycc

+0

'% 'は形式文字列でエスケープする '%%'です。 –

+1

@Skycc、 '{}'はここでエスケープする必要はありません。 –

答えて

3

あなたはPythonの文字列を使用しています%文字は、置換が行われることを示す文字(次の文字で置換の詳細が決定されます)を指定します。また、未加工の%文字が出力に表示されるようにしたいが、%{は、代入しようとしているようにPythonに見えるが、%の後には不適切な文字がある。

出力に%文字を表示するには、その文字を2倍にしてエスケープする必要があります。 "%s %% %s" % ("foo", "bar")の式は"foo % bar"になります。

関連する問題