文字列のフォーマット方法あれこれ

ドキュメントを読んでたら、馴染みのない文字列のフォーマット方法がいくつかあったので、試してみた。

class Person(object):
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def __str__(self):
        return "{0.name} {0.age}".format(self)

    def __repr__(self):
        return "Person object : {0.name} {0.age}".format(self)


person1 = Person(name=u"john", age=26)
person2 = Person(name=u"paul", age=25)
persons = [person1, person2]

# 属性にアクセス
print "{0.name} {0.age}".format(person1)
# => john 26

# リストにインデックスでアクセス
print "{persons[0].name}, {persons[1].name}".format(persons=persons)
# => john, paul

# __str__
print "{!s}".format(person1)
# => john 26

# __repr__
print "{!r}".format(person1)
# => Person object : john 26

# number format
print '{:,}'.format(1234567890)
# => 1,234,567,890

# center
print '{0:*^20}'.format('title')
# => *******title********

# right
print '{0:*>20}'.format('title')
# => ***************title

# left
print '{0:*<20}'.format('title')
# => title***************