python简明教程format_Python基础教程4–格式化字符串

从前面的数据类型和基本输出print()函数学习中,我们可以看到print()可以将各种数据类型打印出来,其实在print()函数内部完成了这些数据类型到字符串的转变再输出到屏幕上。在某些场合比如需要输出到文本文件中并能显示给人看,就需要将非字符串类型的变量进行格式化再写入到文本文件中。

1str()

str()函数是一个各种数据类型通吃的函数,可以将bool,None,int,float,list,tuple,set,dict等数据类型转换成字符串形式,转换方法:str(转换对象)。

源码print(‘—–欢迎来到www.juzicode.com’)

print(‘—–公众号: juzicode/桔子code\n’)

print(‘基本输出实验’)

a = 3

b = 5.12345

c = ‘桔子code’

d = [1,2,3,4,5]

e = (1,2,3,4,5)

f = {1,2,3,4,5}

g = {1:10,2:20,3:30}

h = True

i = None

print(‘ a:’,str(a))

print(‘ b:’,str(b))

print(‘ c:’,str(c))

print(‘ d:’,str(d))

print(‘ e:’,str(e))

print(‘ f:’,str(f))

print(‘ g:’,str(g))

print(‘ h:’,str(h))

print(‘ i:’,str(i))

结果a: 3

b: 5.12345

c: 桔子code

d: [1, 2, 3, 4, 5]

e: (1, 2, 3, 4, 5)

f: {1, 2, 3, 4, 5}

g: {1: 10, 2: 20, 3: 30}

h: True

i: None

2 format()

format方法:’{0}xyz{1}xyz……{n}’.format(变量0,变量1,….变量n),其中xyz是任何其他要显示的字符,也可以是空白字符,format方法和str一样不需要知道变量的数据类型,但是{}中的变量数量的个数n必须和变量n的个数一致。

源码a = 3

b = 5.12345

c = ‘桔子code’

d = [1,2,3,4,5]

e = (1,2,3,4,5)

f = {1,2,3,4,5}

g = {1:10,2:20,3:30}

h = True

i = None

out = ‘ a:{0},b:{1},c:{2},d:{3},e:{4},f:{5},g:{6},h:{7},i:{8}’.format(a,b,c,d,e,f,g,h,i)

print(‘转换后:’,out)

结果转换后:  a:3,b:5.12345,c:桔子code,d:[1, 2, 3, 4, 5],e:(1, 2, 3, 4, 5),f:{1, 2, 3, 4, 5},g:{1: 10, 2: 20, 3: 30},h:True,i:None

如果format函数入参多了一个变量i,虽然没有报错,但是原本想把i也转换为字符串,却不会转换成功:

源码out = ‘ a:{0},b:{1},c:{2},d:{3},e:{4},f:{5},g:{6},h:{7}’.format(a,b,c,d,e,f,g,h,i) #format函数入参多了个i

结果转换后:  a:3,b:5.12345,c:桔子code,d:[1, 2, 3, 4, 5],e:(1, 2, 3, 4, 5),f:{1, 2, 3, 4, 5},g:{1: 10, 2: 20, 3: 30},h:True

如果format函数入参少一个变量i,则会出现抛异常:

0051d0b0b5e091004bc47a81ba1dd478.png

3 格式化符号%

格式化符号的使用方法: ‘xyz %格式化模式1xyz%格式化模式2xyz……%格式化模式n‘%(被格式化对象1,被格式化对象2,…..被格式对象n),在引号里面的“%格式化模式n”是一个整体不可以拆分,xyz的位置可以插入任何字符串;在引号外紧跟一个%符号和一个tuple,tuple里面是要被格式化的对象,对象的个数必须要和引号中的“%格式化模式”个数相等,同时它们的顺序要一一对应。 当只有一个被格式化对象时,被格式化对象也可以不用小括号包含:’xyz %格式化模式xyz’%被格式化对象,当然前一种方法更通用,当需要扩展多个格式化对象时更方便。

>>> a = 15

>>> ‘a=%d’%(a)   #只有一个被格式化对象方式1

‘a=15’

>>> ‘a=%d’%a    #只有一个被格式化对象方式2

‘a=15’

3.1 格式化符号%s

下面的例子是int,float,str,list,tuple,dict,set,bool,None等数据类型,全部用%s格式化的例程,从实验结果我们发现tuple是不能用%s的方式格式化的:

源码a = 3

b = 5.12345

c = ‘桔子code’

d = [1,2,3,4,5]

e = (1,2,3,4,5)

f = {1,2,3,4,5}

g = {1:10,2:20,3:30}

h = True

i = None

print(‘ a:%s’%(a))

print(‘ b:%s’%(b))

print(‘ c:%s’%(c))

print(‘ d:%s’%(d))

print(‘ f:%s’%(f))

print(‘ g:%s’%(g))

print(‘ h:%s’%(h))

print(‘ i:%s’%(i))

print(‘ e:%s’%(e)

结果a:3

b:5.12345

c:桔子code

d:[1, 2, 3, 4, 5]

f:{1, 2, 3, 4, 5}

g:{1: 10, 2: 20, 3: 30}

h:True

i:None

Traceback (most recent call last):  File “E:\juzicode\py3study\04-字符串转换\格式化.py”, line 29, in

print(‘ e:%s’%(e))

TypeError: not all arguments converted during string formatting

3.2 其他格式化符号

格式化符号显示方式

%b二进制显示

%o八进制显示

%d十进制显示

%i十进制显示

%x十六进制显示

%E指数 (基底写为E)

%e指数 (基底写为e)

%f浮点数

%F浮点数

%g指数(e)或浮点数 (自动选择显示模式,大数字用指数)

%G指数(E)或浮点数 (自动选择显示模式,大数字用指数))

%s字符串,和str()一样

%r字符串,和repr()一样

%c单个字符,只能显示单个字符

%%显示”%”本身

例程:

源码a = 100

print(‘整数100 8进制显示:a=%o’%(a))

print(‘整数100 10进制显示:a=%d’%(a))

print(‘整数100 10进制显示:a=%i’%(a))

print(‘整数100 16进制显示:a=%x’%(a))

b = 3.1415925

print(‘浮点数3.1415925 指数E显示:b=%E’%(b))

print(‘浮点数3.1415925 指数e显示:b=%e’%(b))

print(‘浮点数3.1415925 浮点数F显示:b=%F’%(b))

print(‘浮点数3.1415925 浮点数f显示:b=%f’%(b))

print(‘浮点数3.1415925 指数G显示:b=%G’%(b))

print(‘浮点数3.1415925 指数g显示:b=%g’%(b))

b = 314159256

print(‘浮点数314159256 指数G显示:b=%G’%(b))

print(‘浮点数314159256 指数g显示:b=%g’%(b))

c = ‘j’

print(‘字符j 单个字符显示:c=%c’%(c))

r = ‘桔子code’

print(‘字符串 解释器模式显示:r=%r’%(r))

结果整数100 8进制显示:a=144

整数100 10进制显示:a=100

整数100 10进制显示:a=100

整数100 16进制显示:a=64

浮点数3.1415925 指数E显示:b=3.141592E+00

浮点数3.1415925 指数e显示:b=3.141592e+00

浮点数3.1415925 浮点数F显示:b=3.141592

浮点数3.1415925 浮点数f显示:b=3.141592

浮点数3.1415925 指数G显示:b=3.14159

浮点数3.1415925 指数g显示:b=3.14159

浮点数314159256 指数G显示:b=3.14159E+08

浮点数314159256 指数g显示:b=3.14159e+08

字符j 单个字符显示:c=j

字符串 解释器模式显示:r=’桔子code’

3.3 对齐、指定宽度、精度

格式化符号还可以进一步用flags等方式控制显示,得到更丰富的显示模式:%[flags][width].[precision]格式化符号。

flags:可以选择0、+、-、’ ‘(空格)。0表示使用0填充,+表示右对齐。-表示左对齐。’ ‘为一个空格,表示在正数的左侧填充一个空格,从而与负数对齐。

width: 显示宽度

precision: 小数点后精度

下面的例子是一个整数按照16进制显示,左侧补0,显示8个字符宽度:

源码a = 100

print(‘整数100 16进制左侧补0显示:a=%08x’%(a))

结果整数100 16进制左侧补0显示:a=00000064

下面的例子是一个浮点数小数点后保留2位显示:

源码b = 3.1415925

print(‘浮点数3.1415925 保留小数点后2位显示:b=%.2f’%(b))

结果浮点数3.1415925 保留小数点后2位显示:b=3.14

4 整数的其他转换方法

int类型的数据也可以通过hex(),oct(),bin()等函数转换为相应进制的字符串表示。下面的例子是整数100分别表示为16进制,8进制,2进制的字符串形式,

>>> hex(100)

'0x64'

>>> oct(100)

'0o144'

>>> bin(100)

'0b1100100'

chr()函数将一定范围内的整型数据转换为ASCII字符(能用ASCII表示的字符)或者16进制(255以下不可见字符)、或者Unicode表达式(256以上,0x110000以下)。

ord()函数则是chr的逆操作函数。

>>> chr(100)

'd'

>>> chr(1000000)

'\u000f4240'

>>> ord('d')

100

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值