gpt4 book ai didi

python - 进行字符串格式化时,字段名称中出现意外的 '{'

转载 作者:IT老高 更新时间:2023-10-28 22:14:58 25 4
gpt4 key购买 nike

我正在尝试编写一个小脚本来自动化一些我需要编写的 PHP 样板。它应该将字符串 code 的副本写入输出文件,并为 fields 列表中的每个 dict 填写各种替换字段。

但是,我收到了错误:

Traceback (most recent call last):
File "writefields.py", line 43, in <module>
formatted = code.format(**field)
ValueError: unexpected '{' in field name

据我所知,替换字段或字典中没有多余的大括号会导致问题,因此我们将不胜感激。

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')

最佳答案

您需要将不属于格式化占位符的任何 {} 加倍。例如,您有:

function admin_add_{fieldname}_field( $fields ) {
[....]
}

在字符串中。第一行末尾的 { 和最后一行的 } 不是占位符的一部分。分别用 {{}} 替换它们:

function admin_add_{fieldname}_field( $fields ) {{
[....]
}}

将花括号加倍可以避免它们;最终输出将再次包含单个 {} 字符。

在您使用的完整字符串中,应该是:

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;
}}
'''

关于python - 进行字符串格式化时,字段名称中出现意外的 '{',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38662296/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com