python格式化字符串常用方法

#python格式化字符串常用方法:
#一:%格式化:
#语法:"%[(name)][flags][width][.precison]type" %待格式化数据
#参数:
# (1) %: 占位符;
# (2) (name):命名占位字符;
# (3) flags可选:
#     1) +: 右对齐,正数加正号,负数加负号;
#     2) -: 左对齐,正数无符号,负数加负号;
#     3) 空格: 右对齐(默认的对齐方式),正数前加空格,负数前加负号;
#     4) 0: 右对齐,以0填充,正数无符号,负数加负号,并将符号放置在0最左侧;
# (4) width: 占位宽度, 若指定宽度小于原数据长度则按原长度数据输出;
# (5) .precison: 小数点后保留位数;在字符串中则表示截取/字符串切片;
# (6) type: 
# 3.type
#(1) s: string, 字符串;
# (2) d: decimal integer, 十进制数;
# (3) i: integer, 用法同%d;
# (4) u: unsigned integer, 无符号十进制数;
# (5) f: float, 浮点数(默认保留小数点后6位);
# (6) F: Float, 浮点数(默认保留小数点后6位);
# (7) e: exponent, 将数字表示为科学计数法(小写e, 默认保留小数点后6位);
# (8) E: Exponent, 将数字表示为科学计数法(大写E, 默认保留小数点后6位);
# (9) o: octal, 八进制数(即0-7);
# (10) x: hexdecimal, 十六进制数(即0-9a-f);
# (11) X: Hexdecimal, 十六进进制数(0-9A-F);
# (12) g: general format, 通用格式,详见如下...;
# (13) G: General format, 通用格式,详见如下...;
# (14) %c: character, 将十进制数转换为所对应的unicode值;
# (15) %r: representation, 调用__repr__魔法方法输出;
# (16) %%: 转义%,输出百分号
#4.用法详解:
#单个数据
print("i am %s" %  "hyy")
#多个数据:使用元组
print("i am %s,yearsold is %s" % ("hyy",18))


  #指定name使用字典:
  #(1)单个数据:
print("i am %(name)s" % {"name": "hyy"})
 #多个数据:
print("i am %(name)s,yearsold is %(age)s" % {"name": "hyy","age": "18"})
#单个数据对应多个占位:
#元组内元素数量必须和占位符统一
print("i am %s  %s  %s" % ("hyy", "hyy","hyy"))
#使用字典必须指定键值对
print("i am %(name)s %(name)s %(name)s  " %{"name":"hyy"})
# 单个数据直接使用%s占位后,再接%value具体值进行引用;
#
# 多个数据如元组,需要使用小括号;
#
# 字典型数据在指定输出其value时,可通过%(key)s实现输出其字符串值,如果是整型的值,则是%(key)d,其他类型用法如下:
print('today,salary is %.2f' % 2345.456) #保留小数后两位
print('圆周率为:%10.f' % 3.1415926535) #保留整数同时宽度为10 所以3前面有 9 个空格
#二、str.format()格式化(常用)
# format格式化的一般格式:
#
# <带格式化{}字符串>.format(<逗号分隔的参数>)
#
# 其中,用{}在待格式化字符串中开辟一个位置,将format函数中的参数填充到其中。
#
# 实例一:
print('my name is {}, I am {} years old'.format('hyy',18)) #my name is hyy, I am 18 years old
#format()参数传递方式:

# 位置传递
#
# 关键字传递
#
# 字典传递
#
# 列表下标传递

#1.位置传递

#不设置指定位置:按照序列中对应的顺序进行传递
print("a{} b{} c{}".format('A', 'B', 'C')) #aA bB cC

#设置指定位置:按照序列的下标进行数据传递
print("a {1} b {0} c {3} d {2}".format('A', 'B', 'C', 'D'))#a B b A c D d C
#多余参数不传递:占位符{}有几个取几个对应的数据,多余不取
print("a {} b {} c".format('A', 'B', 'C'))#a A b B c
#参数多次调用:可以将序列的下标使用多次调用
print("a {0} b {0} c {2}".format('A', 'B', 'C')) #a A b A c C


#2.关键字传递:
#在{}中注明好关键字,利用key=value来实现赋值
print('{name} is {age} years old'.format(name='hyy', age=18))#hyy is 18 years old

#3.字典传递:
#将参数放入字典中来传递参数
person ={'name':'hyy','age':18}
print('{name} is {age} years old '.format(**person)) #hyy is 18 years old

#4.列表下标传递
people = ['hyy',18 ]
print('{0[0]} is {0[1]} years old'.format(people))#hyy is 18 years old
#format格式化的格式限定符
# 使用格式限定符可实现{}内部的格式化配置(如对齐,保留小数等)
# 一般语法格式:{<参数位置序号>:<格式限定符/格式控制标记>}
#
# 填充,对齐,宽度一起使用
#
# :号后引导填充符号(只能是一个字符, 不填默认为空格) 对齐格式 输出宽度
print('{:>10}'.format('MIKE'))
#>向右对齐,输出宽度为10,空格占6个,MIKE占4个 '      MIKE'


print('{:*<15}'.format('john')) 
#<代表向左对齐,同时填充11个*,总宽度为15 'john***********'


print('{:+^15}'.format('joke'))
#^代表居中,joke占用4个字符长度,剩下11个为+号 '+++++joke++++++'

#默认是左对齐,如果不设置方向箭头的话,如下:
s ="PYTHON"
print("{0:30}".format(s)) 
#代表输出30个长度,PYTHON占用6个,剩下为空格,且左对齐

# 'PYTHON
#三、f-string格式化
#1.语法

#python3.6以后开始支持f-string字符串。f-string即formatting string, 它是str.format()的一个变种,其语法形式之殊途同归,很多时候使用f-string可以有效减少代码量,更为清晰易懂。

#语法:f"{}{}{}"
#(1.1)不指定name1单个数据
print("|我是%s"%"王暖暖|") #>|我是王暖暖
#2)多个数据:使用元组
print("|我是%s,今年%d岁|"%("王暖暖",18))#|我是王暖暖,今年18岁|
#(1.2)指定name:使用字典1
print("|我是%(name)s|"% {"name":"王暖暖"})#|我是王暖暖|
#2)多个数据
print("|我叫%(name)s,今年%(age)d岁。|"%{"name":"王暖暖","age":18})#|我叫王暖暖,今年18岁。

#(1.3)单个数据对应多个占位
# 元组内元素数量必须和占位符数量统一
print("|我是%s %s %s!!!"%("王暖暖","王暖暖","王暖暖"))#使用字典则必须指明键值对
print("|我是%(name)s%(name)s%(name)s!!!|"%({"name":"王暖暖"}))#|我是王暖暖王暖暖王暖暖!!!

#四、总结

#python字符串格式化语法较多,不便记忆,可以在具体需要使用的时候再查询即可。
# %格式化可以满足大多常用的功能,但是处理一些精密化或复杂的格式化需求的时候就束手无策了,所以推荐使用str.format()或f-string格式化处理字符串。

#f-string是str.format()的一个分之,在一些特定情况下使用可以大大减少代码量,使代码更加清晰易懂,可以有选择性的使用f-string。
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王盐盐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值