Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > cz.comp.lang.python > #3110
| Newsgroups | cz.comp.lang.python |
|---|---|
| Date | 2016-08-22 13:30 -0700 |
| Message-ID | <9c794255-6876-450b-aec5-d7fcbea74037@googlegroups.com> (permalink) |
| Subject | PyFormat 0.1.0 released |
| From | Pavel Schön <pavel@schon.cz> |
Zdravím,
chtěl bych zde uvést nový projekt "PyFormat", který zpřístupňuje třídu boost::format z balíku C++ knihoven Boost.org. Pokud někdo používáte Boost, jistě znáte i boost::format.
Modul PyFormat funguje pro Python 2.x a 3.x a podporuje byte stringy i unicode stringy.
Mezi killer feature patří fakt, že formátovací string je syntakticky validován a zkompilován během inicializace a ne až při vyhodnocení, kdy už může být pozdě.
Dále je třeba zmínit, že format objekt lze hodnotami plnit postupně a ne nutně najednou. (operátor % vrací self)
Pomocí bitmasky lze konfigurovat, které chyby budou raisnuty a které ignorovány (např. nesprávný počet argumentů).
Nevýhoda je, že boost::format je relativně pomalý, takže se nedivte, pokud budou výsledky horší než u nativního formátování v pythonu. Ale cíl projektu není překonat nativní formátování co do rychlosti, ale co do features a robustnosti a poskytnout kompatibilní vrstvu pro další projekt, který má boost::format na vstupu-ale o tom zas jindy.
Třídy v modulu:
----------------
Format: bytestringy, Python2: __str__, Python3: __bytes__
UFormat: unicode stringy, Python2: __unicode__, Python3: __str__
Základy použití modulu:
---------------------------
>>> from pyformat import Format as F, UFormat as U
>>> fmt = U('%s %s %s')
>>> print(fmt % 'a' % 'b' % 'c')
a b c
>>> print(fmt % 1 % 2 % 3)
1 2 3
Klonování:
---------------
from pyformat import Format as F, UFormat as U
tmpl = U('foo %s') # parsed only once
def foo(i):
fmt = tmpl.clone() # clone parsed object (copy.copy() also works)
print(fmt % i)
foo(1)
foo(2)
foo(3)
Prohození:
-------------
>>> fmt1, fmt2 = U('first'), U('second')
>>> fmt1.swap(fmt2)
Projekt včetně popisu dalších featur je ke stažení na https://github.com/pavelschon/PyFormat
Budu rád za každý bug report a pull request.
Back to cz.comp.lang.python | Previous | Next — Next in thread | Find similar
PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-22 13:30 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-22 14:43 -0700
Re: [python] PyFormat 0.1.0 released Lumír Balhar <frenzy.madness@gmail.com> - 2016-08-22 23:14 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 00:12 -0700
Re: [python] PyFormat 0.1.0 released Ondrej Tuma <konference@webjet.cz> - 2016-08-23 11:05 +0200
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 02:59 -0700
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-24 01:39 -0700
Re: [python] PyFormat 0.1.0 released Honza Král <honza.kral@gmail.com> - 2016-08-24 16:05 +0200
Re: [python] PyFormat 0.1.0 released Ken Mijime <kenaco666@gmail.com> - 2016-08-23 20:54 +0200
Re: [python] PyFormat 0.1.0 released Honza Král <honza.kral@gmail.com> - 2016-08-23 12:40 +0200
Re: [python] PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 12:09 -0700
Re: PyFormat 0.1.0 released Pavel Schön <pavel@schon.cz> - 2016-08-23 02:01 -0700
Re: [python] PyFormat 0.1.0 released Ken Mijime <kenaco666@gmail.com> - 2016-08-23 11:08 +0200
Re: [python] PyFormat 0.1.0 released Ondrej Tuma <konference@webjet.cz> - 2016-08-23 11:09 +0200
Re: [python] PyFormat 0.1.0 released Petr Messner <petr.messner@gmail.com> - 2016-08-23 11:40 +0200
csiph-web