字符串格式化+用户输入
字符串格式化
概念:表达描述一个字符串,就是一个字符串
使用场景:往字符串里面传入对应的值
# 字符串的描述--传统方案
# 可读性不好,麻烦
name = 'tom'
age = 20
info = '我叫:'+name+', 年龄:'+str(age)+''
print(info)
方法一: %
# 方案一:%s--以字符串的形式传入
name = 'tom'
age = 20
info = '我叫:%s, 年龄:%s' % (name, age) # 该位置制定类型,
print(info)
符号
%s | 用str()函数进行字符串转换 |
---|---|
%d | 转成有符号的十进制数(例如:工资、年龄) |
%f | 转成浮点数(小数部分自然截断,例如:分数) |
%x | 转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写,例如:通信层的协议,0 - 9,A - F,数字中出现A - F就表示十六进制) |
# 如果要求的宽度< 数据本身的宽度,这个要求不理会
print('%10d' % 90) # %10d 最小宽度10 -- 正数--右对齐,左补齐补空格,例如:文件,日志
print('%02d' % 90) # %02d 最小宽度2 -- 正数--右对齐,左补齐补0,例如:文件,,日志
print('%-9d' % 90) # %-10d 最小宽度10 -- 负数--左对齐,右补齐补空格,例如:文件,日志
# %X %x 转成无符号十六进制数
print('%X' % 108)
print('%x' % 108)
print('%#X' % 108)
print('%#x' % 108)
# %f 浮点数 默认保留小数点后6位 四舍五入
print('%.2f' % 3.141593) # 保留小数点后2位
print('%6.2f' % 3.141593) # 6整体六位 = 小数点后2位+小数点点+3+左补2空格
# 实际应用
# 接口自动化--requests--body
telNum = '13912378297'
addUser_data = """{
"acc003": "tom",
"tel": "%s",
"acc011": "21",
"acc030": "1234",
}""" % telNum
print(addUser_data)
方法二:使用了字符串对象的.format()
# 1- 顺序传值法--位置不能空着
name = 'tom'
age = 20
# :6 字符串:左对齐右补齐,整数:右对齐左补齐
info = '我叫:{:6}, 年龄:{:6}'.format(name, age)
# < 左对齐有补齐; > 右对齐左补齐; ^ 中间对齐
info1 = '我叫:{:>6}, 年龄:{:>6}'.format(name, age)
info2 = '我叫:{:<6}, 年龄:{:<6}'.format(name, age)
info3 = '我叫:{:^6}, 年龄:{:^6}'.format(name, age)
info4 = '我叫:{:*^6}, 年龄:{:*^6}'.format(name, age)
print(info)
print(info1)
print(info2)
print(info3)
print(info4)
# 2- 下标传值法
name = 'tom'
age = 20
info = '我叫:{0:>6}, 年龄:{1:>6}'.format(name, age)
info1 = '我叫:{1:<6}, 年龄:{1:<6}'.format(name, age)
print(info)
print(info1)
# 3- 变量传值--不建议使用
info = '我叫:{name:<6}, 年龄:{age:<6}'.format(name='tom', age=20)
print(info)
# python 3.6 推出f方法解决'变量传值'麻烦的问题
name = '晓丽'
age = 22
# info = f'我叫:{name}, 年龄:{age}'
info = f'我叫:{name:>6}, 年龄:{age:>6}'
#info = f'我叫:{name:0>6}, 年龄:{age:>6}'
print(info)
# 字符串本身就有一个{}
name = '晓丽'
age = 22
info = f'我叫:{name}, 年龄:{age},我自己就有一个{{}}'
print(info)
网友评论