Библиотека Python для форматирования строк с использованием пользовательских заполнителей - PullRequest
1 голос
/ 13 августа 2011

Я ищу библиотеку Python для форматирования строк с использованием пользовательских заполнителей. Я имею в виду, что я хотел бы иметь возможность определять строку типа "%f %d %3c", где, например, %f будет затем заменено каким-либо именем файла, %d с именем каталога и %3c со счетчиком из трех цифр. , Или что-то. Он не должен быть похожим на printf, но было бы здорово, если бы это было так. Поэтому я хотел бы иметь возможность определить, что означает каждая буква: строка или число, а также некоторое форматирование (например, количество цифр) данных.

Идея состоит в том, что пользователь может указать формат, а затем я заполнить его данными. Вроде datefmt работает. Но для нестандартных вещей.

Есть ли что-то подобное для Python (2.5+, к сожалению, не для 2.7 и 3 и его __format__)?

1 Ответ

2 голосов
/ 13 августа 2011

Существует string.Template, но он не обеспечивает именно то, что вы хотите:

>>> from string import Template
>>> t = Template("$filename $directory $counter")
>>> t.substitute(filename="file.py", directory="/home", counter=42)
'file.py /home 42'
>>> t.substitute(filename="file2.conf", directory="/etc", counter=8)
'file2.conf /etc 8'

Документация: http://docs.python.org/library/string.html#template-strings

Но я думаю, что это обеспечивает то, что вам нужно.Просто укажите строку шаблона и используйте это:

>>> template = "%(filename)s %(directory)s %(counter)03d"
>>> template % {"filename": "file", "directory": "dir", "counter": 42}
'file dir 042'
>>> template % {"filename": "file2", "directory": "dir2", "counter": 5}
'file2 dir2 005'
...