python3 开发面试题(%s和format的区别)5.31详解编程语言

在格式化字符串中有两种方法:

  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))   # 千分位格式化

 

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/12210.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论