Ich versuche ein kleines Skript zu schreiben, das einige PHP-Boilerplates automatisiert, die ich schreiben muss. Es sollte eine Kopie der Zeichenfolge code
in die Ausgabedatei schreiben, wobei die verschiedenen Ersatzfelder für jedes dict in der Liste fields
ausgefüllt werden.Unerwarteter '{' in Feldname beim Formatieren von Strings
Allerdings erhalte ich die Fehlermeldung:
Traceback (most recent call last):
File "writefields.py", line 43, in <module>
formatted = code.format(**field)
ValueError: unexpected '{' in field name
Soweit ich sagen kann, es gibt keine zusätzlichen Klammern in entweder den Ersatz Felder oder die dicts, die Probleme verursachen, sollten, so dass jede Hilfe würde geschätzt werden.
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')