Dus*_*tin 31 python string-formatting python-3.x
我正在尝试编写一个小脚本,它将自动化我需要编写的一些PHP样板.它应该将字符串的副本写入code输出文件,并为fields列表中的每个字典填写各种替换字段.
但是,我收到错误:
Traceback (most recent call last):
File "writefields.py", line 43, in <module>
formatted = code.format(**field)
ValueError: unexpected '{' in field name
Run Code Online (Sandbox Code Playgroud)
据我所知,替换领域或应该导致问题的决定没有额外的括号,所以任何帮助将不胜感激.
code = '''
// {label}
add_filter( 'submit_job_form_fields', 'frontend_add_{fieldname}_field' );
function frontend_add_{fieldname}_field($fields) {
$fields['job']['job_{fieldname}'] = array(
'label' => __('{label}', 'job_manager'),
'type' => 'text',
'required' => {required},
'priority' => 7,
'placeholder' => '{placeholder}'
);
return $fields;
}
add_filter( 'job_manager_job_listing_data_fields', 'admin_add_{fieldname}_field' );
function admin_add_{fieldname}_field( $fields ) {
$fields['_job_{fieldname}'] = array(
'label' => __( '{label}', 'job_manager' ),
'type' => 'text',
'placeholder' => '{placeholder}',
'description' => ''
);
return $fields;
}
'''
fields = [
{
'fieldname': 'salary',
'label': 'Salary ($)',
'required': 'true',
'placeholder': 'e.g. 20000',
},
{
'fieldname': 'test',
'label': 'Test Field',
'required': 'true',
'placeholder': '',
}
]
with open('field-out.txt', 'w') as f:
for field in fields:
formatted = code.format(**field)
f.write(formatted)
f.write('\n')
Run Code Online (Sandbox Code Playgroud)
Mar*_*ers 50
您需要将任何或不属于格式化占位符的内容加倍.例如,你有:{}
function admin_add_{fieldname}_field( $fields ) {
[....]
}
Run Code Online (Sandbox Code Playgroud)
在字符串中.在{和}有没有一个占位符的一部分.
加倍那些花括号逃脱了他们; 最终输出将再次包含单个{和}字符:
code = '''
// {label}
add_filter( 'submit_job_form_fields', 'frontend_add_{fieldname}_field' );
function frontend_add_{fieldname}_field($fields) {{
$fields['job']['job_{fieldname}'] = array(
'label' => __('{label}', 'job_manager'),
'type' => 'text',
'required' => {required},
'priority' => 7,
'placeholder' => '{placeholder}'
);
return $fields;
}}
add_filter( 'job_manager_job_listing_data_fields', 'admin_add_{fieldname}_field' );
function admin_add_{fieldname}_field( $fields ) {{
$fields['_job_{fieldname}'] = array(
'label' => __( '{label}', 'job_manager' ),
'type' => 'text',
'placeholder' => '{placeholder}',
'description' => ''
);
return $fields;
}}
'''
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11080 次 |
| 最近记录: |