美文网首页
Python3 - 自定义字符串的格式化

Python3 - 自定义字符串的格式化

作者: 惑也 | 来源:发表于2018-12-24 18:12 被阅读23次

    问题

    通过 format() 函数和字符串方法使得一个对象能支持自定义的格式化操作。

    解决方案

    为了自定义字符串的格式化,需要在类上面定义 __format__() 方法。例如:

    _formats = {
        'ymd' : '{d.year}-{d.month}-{d.day}',
        'mdy' : '{d.month}/{d.day}/{d.year}',
        'dmy' : '{d.day}/{d.month}/{d.year}'
        }
    
    
    class Date(object):
        def __init__(self, year, month, day):
            self.year = year
            self.month = month
            self.day = day
    
        def __format__(self, code):
            if code == '':
                code = 'ymd'
            fmt = _formats[code]
            return fmt.format(d=self)
    

    现在 Date 类的实例可以支持格式化操作,例如:

    d = Date(2012, 12, 21)
    
    print(format(d))
    2012-12-21
    
    print(format(d, 'mdy'))
    12/21/2012
    
    print('The date is {:ymd}'.format(d))
    print(f"The date is {d}")
    The date is 2012-12-21
    

    __format__() 方法给Python的字符串格式化功能提供了一个模板。 需要强调的是,格式化代码的解析工作完全由类自己决定。因此,格式化代码可以是任何值。

    相关文章

      网友评论

          本文标题:Python3 - 自定义字符串的格式化

          本文链接:https://www.haomeiwen.com/subject/xawzkqtx.html