在格式化字符串中有三种办法

金沙网址,在格式化字符串中有两种方法:

  1、%s

  2、format

大家常用的是哪一种方法?为什么要用你选的这种方法?

我们先看一个例子:

首先我们定义一个我军需要击杀的恐怖分子的地理坐标为 c=(128,128)

# 利用%进行字符串格式化
print("向他开炮:%s" % c)  #报错

TypeError: not all arguments converted during string formatting

print("向他开炮:%s" % (c, ))  #正确的写法

# 用format进行字符串的格式化
print("向他开炮:{}".format(c))

format的常见方法:

#通过关键字
d1 = {"name": "duoduo", "age": 18}
# s = "{name} is {age} years old.".format(d1["name"], d1["age"])
s = "{name} is {age} years old.".format(**d1)
print(s)


#通过对象属性
class Person():

    def __init__(self, name, age):
        self.name = name
        self.age = age

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


p1 = Person("duoduo", 18)
print(p1)


#通过下标
l1 = ["duoduo", 18]
# s = "{} is {} years old. {} 帅。".format(l1[0], l1[1], l1[0])
# s = "{0} is {1} years old. {0} 帅。".format(l1[0], l1[1])
s = "{0[0]} is {0[1]} years old. {0[0]} 帅。".format(l1)
print(s)


#填充与对齐
print("duoduo".center(20, "*"))      #填充左右
print("{:>10}".format("duoduo"))   #左边空格填充
print("{:0>10}".format("duoduo"))   #左边0填充
print("{:*>10}".format("duoduo"))   #左边*填充
print("{:*^10}".format("duoduo"))   #左右填充
print("{:*<10}".format("duoduo"))   #右边用*填充

print("duoduo".zfill(18))    #  0填充

print("{:.2f}".format(3.141592653))     #保留两位小数
print("{:b}".format(10))   #二进制
print("{:d}".format(10))   #十进制
print("{:o}".format(10))   #八进制 
print("{:x}".format(10))   #十六进制


print("{:,}".format(1000000))   # 千分位格式化

 

相关文章