python数据类型拼接方式(+,、%、format、f-string)

目录

数据拼接方式

1.+号和,号

2.%号占位符(预留位置)​​​​​​​

3.f-string

4.format(用得多)


数据拼接方式

1.+号和,号

+ 号拼接     注意,整数和浮点数要转换为字符串类型!!!

a='星黛露'
b=169
print(a+'的价格是'+str(b))#易错点,整数和浮点数没有转换为字符串!
>>>星黛露的价格是169

,号拼接(如果用逗号来拼接,不需要关注字符串的数据类型,打印的内容中间会出现空格!)

a = '星黛露'
b = 17.5
print(a,'price is ',b)
>>>星黛露 price is 17.5###如果用逗号来拼接,打印的内容中间会出现空格!

2.%号占位符(预留位置)

通用占位符格式:

%[(name)][flags][width].[precision]typecode

  • (name)      可选,用于选择指定的key
  • flags          可选,可供选择的值有:(不填则表示不需要对齐)
    • +       右对齐;正数前加正号,负数前加负号;
    • -        左对齐;正数前无符号,负数前加负号;
    • 空格  右对齐;正数前加空格,负数前加负号;
    • 0        右对齐;正数前无符号,负数前加负号;用0填充空白处
  • width         可选,占有宽度
  • .precision   可选,小数点后保留的位数(注意点)
  • typecode    必选(常用类型,s/d/f类型!!!)
    • s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置    %s:字符串类型
    • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置   %d:整数类型
    • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)   %f:浮点数类型
    • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置(原格式输出!)
    • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置
    • o,将整数转换成 八  进制表示,并将其格式化到指定位置
    • x,将整数转换成十六进制表示,并将其格式化到指定位置
    • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)
    • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号
  • 注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

# 1.name的用法,基本用的很少,对应的时候后面的字典类型
print('%(name)s prcie is %(price)d'%{'name':'米妮','price':17})
>>>米妮 prcie is 17
tpl = "i am %s" % "alex"
>>>i am alex

tpl = "i am %s age %d" % ("alex", 18)
>>>i am alex age 18

tpl = "i am %s age %08d" % ("alex", 18) #占8个位置,向右对齐,不足的用0补足
>>>i am alex age 00000018

tpl = "percent %.2f" % 99.97623 #保留两位小数
>>>percent 99.98

tpl = "i am %.2f %%" % (123.425556) #%%号只保留一个百分号
>>>i am 123.43 %
#%r的用法,原格式输出
adj= ['easy','so so','difficult','sunshine','life','crazy']
print ('Python is %s ' % adj[3])
>>>Python is sunshine 

print ('Python is %r ' % adj[3])
>>>Python is 'sunshine'

个人总结:%‘(+或者-,+表示左边补齐空格,-表示右边补齐空格)’(保留的空格数量).(截取的数量,也就是对变量截取多少个数字,从左边开开始计算)

要点强调:先截取n个字符,再按需要长度补空格

原则:先截再补

a = '星黛露123456'
b = '米妮'
print('这个玩偶叫做%-5.3s'%a)
>>>这个玩偶叫做星黛露   #星黛露后面会有两个空格  #先截取三个字符,再向左对齐补齐空格

3.f-string

自定义格式:对齐,宽度、符号、补零、精度、进制等

f-string采用的是{content:format}设置字符串格式,其中content是替换并填入字符串的内容,可以是变量,表达式或者是函数式子,format是格式描述符号,采用默认格式时,不需要指定,只要写上{content}内容即可。

# {}内使用变量、表达式或者函数等
name='jan'
print(f"my name is {name}")
>>>my name is jan

age=17
print(f"my age is {age+1}") #直接数学计算也可以
>>>my age is 18

def fun(a):
    a+=1
    return a
print(f'my age is {fun(7)}')
>>>my age is 8

#关于符号问题
#1.注意括号内的符号的问题,注意单引号双引号三引号的问题
print(f"""i said {"his's a boy"}""")
>>>i said his's a boy
#2.大括号外的引号还可以使用 \ 转义,但大括号内不能使用 \ 转义:
#3.f-string大括号外如果需要显示大括号,则应输入连续两个大括号 {{ 和 }}:

f-string:自定义格式:对齐,宽度、符号、补零、精度、进制等

width:整数width指定宽度

0width:整数width指定宽度,开头以0指定高位用0补足

width.precision:煮熟width指定宽度,整数precision指定显示的精度

注意:

1.0width 不可用于复数类型和非数值类型,width.precision 不可用于整数类型。

2.width.precision 用于不同格式类型的浮点数、复数时的含义也不同:用于 f、F、e、E 和 % 时 precision 指定的是小数点后的位数,用于 g 和 G 时 precision 指定的是有效数字位数(小数点前位数+小数点后位数)。 

3.width.precision 除浮点数、复数外还可用于字符串,此时 precision 含义是只使用字符串中前 precision 位字符

name='kitty'
price=18.983
age=5
print(f'{name:<6s} price is {price:.3f},she is {age:>3d} old')
>>>kitty  price is 18.983,she is   5 old
#<表示左对齐,>表示右对齐  ^表示居中对齐
#width.prcision   宽度.精度    s--string   d--digit   f--float

4.format(用得多)

基础用法:

tpl = "i am {}, age {}, {}".format("seven", 18, 'alex')
>>>i am seven, age 18, alex #位置传参数!  
  
tpl = "i am {}, age {}, {}".format(*["seven", 18, 'alex'])
>>>i am seven, age 18, alex#  星号表示不定长传参!后面跟的是列表!
 
tpl = "i am {0}, age {1}, really {0}".format("seven", 18)
>>>i am seven, age 18, really seven  #format可以根据前面数字来锁定后面传入参数的位置!
    
tpl = "i am {0}, age {1}, really {0}".format(*["seven", 18])
>>>i am seven, age 18, really seven # 不定长传参
    
tpl = "i am {name}, age {age}, really {name}".format(name="seven", age=18)
>>>i am seven, age 18, really seven  #类似关键字传参 
   
tpl = "i am {name}, age {age}, really {name}".format(**{"name": "seven", "age": 18})
>>>i am seven, age 18, really seven  #双星星号传参字典,传键值!
       
tpl = "i am {0[0]}, age {0[1]}, really {0[2]}".format([1, 2, 3], [11, 22, 33])
>>> i am 1, age 2, really 3

自定义格式:

[fill] [align] [sign] [#] [0] [width] [,] [.precision] [type]

  • fill      【可选】空白处填充的字符
  • align   【可选】对齐方式(需配合width使用)
    • <,内容左对齐
    • >,内容右对齐(默认)
    • =,内容右对齐,将符号放置在填充字符的左侧,且只对数字类型有效。 即使:符号+填充物+数字
    • ^,内容居中
  • sign         【可选】有无符号数字
    • +, 正号加正,负号加负;
    •  -, 正号不变,负号加负;
    • 空格 ,正号空格,负号加负;
  • #   【可选】对于二进制、八进制、十六进制,如果加上#,会显示 0b/0o/0x,否则不显示
  • ,         【可选】为数字添加分隔符,如:1,000,000
  • width       【可选】格式化位所占宽度
  • .precision 【可选】小数位保留精度
  • type         【可选】格式化类型
  • 传入” 字符串类型 “的参数
    • s,格式化字符串类型数据
      • 空白,未指定类型,则默认是None,同s
  • 传入“ 整数类型 ”的参数
    • b,将10进制整数自动转换成2进制表示然后格式化
      • c,将10进制整数自动转换为其对应的unicode字符
      • d,十进制整数
      • o,将10进制整数自动转换成8进制表示然后格式化;
      • x,将10进制整数自动转换成16进制表示然后格式化(小写x)
      • X,将10进制整数自动转换成16进制表示然后格式化(大写X)
    • 传入“ 浮点型或小数类型 ”的参数 
    • e, 转换为科学计数法(小写e)表示,然后格式化;
      • E, 转换为科学计数法(大写E)表示,然后格式化;
      • f , 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • F, 转换为浮点型(默认小数点后保留6位)表示,然后格式化;
      • g, 自动在e和f中切换
      • G, 自动在E和F中切换
      • %,显示百分比(默认显示小数点后6位)
name='seven'
age=18
money=18.885
print('i am {:8.3s},age{:^5d},money{:5.2f}'.format(name,age,money))
>>>i am sev     ,age 18  ,money18.89
#和f-string类似,自定义格式一样
#8.3s  占8个位置,截取3个字符串
#^5d   占5个位置,居中
#5.2 f 占5个位子,保留2位小数
# s--string   d-digit

ps:本文内容参考部分博客内容,供个人学习使用,如有侵权请联系,谢谢~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值