字符串的格式化

Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中。在   Python 中,字符串格式化使用与 C 中 sprintf 函数一样的语法。

在python中格式化输出字符串通用的形式为:

格式标记字符串 % 要输出的值组

其中,左边部分的"格式标记字符串"可以完全和c中的一致。右边的"值组"如果有两个及以上的值则需要用小括号括起来,中间用逗号隔开。

重点来看左边的部分。左边部分的最简单形式为:

%code

其中的code有多种,不过由于在python中,所有东西都可以转换成string类型,因此,如果没有什么特殊需求完全可以全部使用‘%s’来标记。比如:

‘%s %s %s‘ % (1, 2.3, [‘one‘, ‘two‘, ‘three‘])

它的输出为‘1 2.3 [‘one‘, ‘two‘, ‘three‘]‘,就是按照%左边的标记输出的。虽然第一个和第二值不是string类型,一样没有问题。在这个过程中,当电脑发现第一个值不是%s时,会先调用整型数的函数,把第一个值也就是1转成string类型,然后再调用str()函数来输出。前面说过还有一个repr()函数,如果要用这个函数,可以用%r来标记。除了%s外,还有很多类似的code:

整型数:%d

无符号整型数:%u

八进制:%o

十六进制:%x   %X

浮点数:%f

科学记数法: %e   %E

根据数值的不同自动选择%e或%f: %g

根据数值的不同自动选择%E或%f: %G

就跟前面说用\进行转义一样,这里用%作为格式标记的标识,也有一个%本身应该如何输出的问题。如果要在"格式标记字符串"中输出%本身,可以用%%来表示。

上面说的只是格式标记的最简间的形式,来看复杂一点的:

‘%6.2f’ % 1.235

在这种形式中,在f的前面出现了一个类似小数的6.2它表示的意思是,总共输出的长度为6个字符,其中小数2位。还有更复杂的:

‘%06.2f’ % 1.235

在6的前面多了一个0,表示如果输出的位数不足6位就用0补足6位。这一行的输出为‘001.24’,可以看到小数也占用一位。类似于这里0这样的标记还有-、+。其中,-表示左对齐,+表示在正数前面也标上+号,默认是不加的。最后来看最复杂的形式:

‘%(name)s:%(score)06.1f’ %{‘score‘:9.5, ‘name‘:‘newsim‘}

这种形式只用在要输出的内容为dictionary(一种python的数据类型)时,小括号中的(name)和(score)对应于后面的键值对中的键。前面的例子可以看到,”格式标记字符串“中标记的顺序和"要输出的值组"中的值是一一对应的,有顺序,一对一,二对二。而在这种形式中,则不是,每个格式标记对应哪个值由小括号中的键来指定。这行代码的输出为:‘newsim:0009.5‘。

有时候在%6.2f这种形式中,6和2也不能事先指定,会在程序运行过程中再产生,那怎么输入呢,当然不能用%%d.%df或%d.%d%f。可以用%*.*f的形式,当然在后面的”要输出的值组“中包含那两个*的值。比如:‘%*.*f‘ % (6, 2, 2.345)就相当于‘%6.2f‘ % 2.345。

这是这本书到此为止看起来最复杂的内容。不过如果记不住,或不想那么耐烦,完全可以全部用%s代替,或者用多个"+"来构造类似的输出字符串。这里的%真有点除法的味道,怪不得设计者会选择用%这个除号。

字符串格式化代码如下:

%%百分号标记

%c字符及其ASCII码

%s字符串

%d有符号整数(十进制)

%u无符号整数(十进制)

%o无符号整数(八进制)

%x无符号整数(十六进制)

%X无符号整数(十六进制大写字符)

%e浮点数字(科学计数法)

%E浮点数字(科学计数法,用E代替e)

%f浮点数字(用小数点符号)

%g浮点数字(根据值的大小采用%e或%f)

%G浮点数字(类似于%g)

%p指针(用十六进制打印值的内存地址)

%n存储输出字符的数量放进参数列表的下一个变量中

字符串的相关操作举例

# 字符串对齐

word = "version3.0"

# 20个字符中间对齐

print word.center(20)

# 20个字符两边补齐*

print word.center(20, "*")

# 左对齐

print word.ljust(0)

# 20个字符右对齐

print word.rjust(20)

# 前面空20个字符

print "% 30s" % word

#去除转义字符

strip()

lstrip()

rstrip()

#字符的分割

split()

split(",")

split(",", 2)

#字符串比较

startswith()

endswith()

#查找替换

find(substring [, start [, end]])

rfind()

replace(new, old [, max])

#字符串与日期

time.strftime(format[, tuple]) ->string

time.strptime(string, format) ->struct_time

字符串的格式化

>>> k = "uid"

>>> v = "sa"

>>> "%s=%s" % (k, v)

‘uid=sa‘ 整个表达式的值为一个字符串。第一个 %s 被变量 k 的值替换;第二个 %s 被 v 的值替换。Python格式化字符串的所有其它字符 (在这个例子中,是等号) 按原样打印输出。注意 (k, v) 是一个 tuple。字符串格式化不只是连接。它甚至不仅仅是格式化。它也是强制类型转换。

字符串格式化与字符串连接的比较

>>> uid = "sa"

>>> pwd = "secret"

>>> print pwd + " is not a good password for " + uid

secret is not a good password for sa

>>> print "%s is not a good password for %s" % (pwd, uid)

secret is not a good password for sa

>>> userCount = 6

>>> print "Users connected: %d" % (userCount, )

Users connected: 6

>>> print "Users connected: " + userCount

Traceback (innermost last):

File "", line 1, in ?

TypeError: cannot concatenate ‘str‘ and ‘int‘ objects

python输出举例_python字符串格式化输出及相关操作代码举例相关推荐

  1. python字符数组输出_python字符串格式化输出

    字符串格式化输出 : 字符串的拼接第一种方式 如:name = input("name:") age = input("age:") job = input(& ...

  2. python123格式化输出_python 字符串格式化输出 %d,%s及 format函数

    旧式格式化方式:%s,%d 1.顺序填入格式化内容 s = "hello %s, hello %d"%("world", 100) print(s) 结果: ' ...

  3. Python 实验题目:字符串格式化输出内容为:姓名:张三,学号:1101,张三的平均分为90.65分。(平均分的原始值为:90.6497)

    实验题目:字符串格式化输出内容为:姓名:张三,学号:1101,张三的平均分为90.65分.(平均分的原始值为:90.6497) 用以下四种方法实现: (1)通过位置参数 (2)通过关键字参数名称 (3 ...

  4. python用三种方式定义字符串、并依次输出_Python 字符串格式化输出的3种方式

    原博文 2019-12-28 21:17 − 1. % print ('我叫%s, 身高%scm' % (name,height)) ** 传入的值为元组,依次填充 %s :占位符 str()& ...

  5. python语言格式化输出_Python字符串格式化输出

    原博文 2019-11-22 12:48 − 本文链接:https://www.cnblogs.com/zyuanlbj/p/11910913.html 使用占位符%s name = '小飞' pri ...

  6. python如何进行格式化输出变量_Python变量格式化输出实现原理解析

    print() 函数使用以 % 开头的转换说明符对各种类型的数据进行格式化输出. 转换说明符(Conversion Specifier)只是一个占位符(也称为格式化操作符),它会被后面表达式(变量.常 ...

  7. python的2种字符串格式化输出

    字符串格式化代码(typecode) 法一: %格式使用下面的格式 %[(name)] [flags] [width][.precision] typecode (name)输出字典的value使用, ...

  8. python格式化输出类型_Python print 格式化输出

    format 的使用方式如下: print('{0},{1}'.format('zhangk', 32)) print('{},{},{}'.format('zhangk','boy',32)) pr ...

  9. python format 冒号_python之格式化输出

    字符串格式化有两种方式,%和format 先介绍下%号的方法 #%s的语法结构,叫做占位符,就是先占一个位置,然后我们用真实的要显示的数据替换占位符即可 #最简单的用法就是下面的方式,其实%s还有其他 ...

最新文章

  1. Android -- Annotation(注解)原理详解及常见框架应用
  2. oracle字典表导出,oracle 如何导出数据字典
  3. 【深度学习】深入浅出transformer内部结构
  4. 并发编程 - 协程 - 1.协程概念/2.greenlet模块/3.gevent模块/4.gevent实现并发的套接字通信...
  5. 【Python刷题】_3
  6. 镜像翻转_《蒙娜丽莎》镜像翻转后,暗藏神秘的第二张脸?网友:笑容消失了...
  7. wordpress企业网站模板
  8. 每日词根——vad(走)
  9. 【Android安全】安卓app爬虫工具 | 混淆检测工具
  10. 结对编程-四则运算-题目去重
  11. 任天堂正式发布 NINTENDO SWITCH OLED,乐得瑞任天堂Switch底座方案
  12. 安装neurokit 的艰难历程
  13. 一篇对于了解我自己,挖掘我自己,从而成长的文章
  14. Xcode4 修改公司名称
  15. 视频消重软件吾爱伪原创 视频如何修改md5
  16. 柴达木盆地第四大气区探实 尖北产量超亿方
  17. Linux根目录下的目录介绍
  18. 东莞理工学院计算机硕士点,东莞理工学院2021研究生招生计划
  19. uni-app分割线微信小程序端不显示
  20. 2022年中国冰雪旅游产业发展现状分析:预计2021-2022冰雪季旅游人数将达到3.05亿人次[图]

热门文章

  1. Vue 用户管理后台思维导图
  2. leetcode 解压缩_leetcode之字符串压缩
  3. react hook问题讲解
  4. vue页面引入多个组件的方法
  5. SpringDataJpa报错: Table 'XX.hibernate_sequence' doesn't exist
  6. Jenkins的入门(二)配置
  7. 图像局部显著性—点特征(SiftGPU)
  8. 杜克大学医学院禁止公开场合说中文?涉事负责人被勒令下台...
  9. 2016-04-25-信息系统实践手记5-CACHE设计一例
  10. React+Redux仿Web追书神器