第1章 1.7 使用第三方工具——parse
阿新 • • 發佈:2022-04-08
import parse from decimal import Decimal import delorean class PriceLog(object): def __init__(self, timestamp, product_id, price): self.timestamp = timestamp self.product_id = product_id self.price = price def __repr__(self): return '<PriceLog ({}, {}, {})>'.format(self.timestamp, self.product_id, self.price) @classmethod def parse(cls, text_log): ''' Parse from a text log with the format [<Timestamp>] - SALE - PRODUCT: <product id> - PRICE: $<price> to a PriceLog object ''' def price(string): return Decimal(string) def isodate(string): return delorean.parse(string) FORMAT = ('[{timestamp:isodate}] - SALE - PRODUCT: {product:d} - ' 'PRICE: ${price:price}') formats = {'price': price, 'isodate': isodate} result = parse.parse(FORMAT, text_log, formats) return cls(timestamp=result['timestamp'], product_id=result['product'], price=result['price'])
執行結果如下:
>>> log = '[2018-05-05T11:07:12.267897] - SALE - PRODUCT: 1345 - PRICE: $09.99'
>>> PriceLog.parse(log)
<PriceLog (Delorean(datetime=datetime.datetime(2018, 5, 5, 11, 7, 12, 267897), timezone='UTC'), 1345, 9.99)>