在编写程序的过程中,经常需要进行格式化输出,每次用每次查。干脆就在这里整理一下,以便索引。

格式化操作符(%)

"%"是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化(C语言中也是使用%)。

下面整理了一下Python中字符串格式化符合:

格式化符号

说明

%c

转换成字符(ASCII 码值,或者长度为一的字符串)

%r

优先用repr()函数进行字符串转换

%s

优先用str()函数进行字符串转换

%d / %i

转成有符号十进制数

%u

转成无符号十进制数

%o

转成无符号八进制数

%x / %X

转成无符号十六进制数(x / X 代表转换后的十六进制字符的大小写)

%e / %E

转成科学计数法(e / E控制输出e / E)

%f / %F

转成浮点数(小数部分自然截断)

%g / %G

%e和%f / %E和%F 的简写

%%

输出% (格式化字符串里面包括百分号,那么必须使用%%)

这里列出的格式化符合都比较简单,唯一想要强调一下的就是"%s"和"%r"的差别。

看个简单的代码:

string = "Hello\tWill\n"

print "%s" %string

print "%r" %string

代码的输出为:

其实,这里的差异是str()和repr()两个内建函数之间的差异:

str()得到的字符串是面向用户的,具有较好的可读性

repr()得到的字符串是面向机器的

通常(不是所有)repr()得到的效果是:obj == eval(repr(obj))

格式化操作符辅助符

通过"%"可以进行字符串格式化,但是"%"经常会结合下面的辅助符一起使用。

辅助符号

说明

*

定义宽度或者小数点精度

-

用做左对齐

+

在正数前面显示加号(+)

#

在八进制数前面显示零(0),在十六进制前面显示"0x"或者"0X"(取决于用的是"x"还是"X")

0

显示的数字前面填充"0"而不是默认的空格

(var)

映射变量(通常用来处理字段类型的参数)

m.n

m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

看一些简单的 例子:

num = 100

print "%d to hex is %x" %(num, num)

print "%d to hex is %X" %(num, num)

print "%d to hex is %#x" %(num, num)

print "%d to hex is %#X" %(num, num)

# 浮点数

f = 3.1415926

print "value of f is: %.4f" %f

# 指定宽度和对齐

students = [{"name":"Wilber", "age":27}, {"name":"Will", "age":28}, {"name":"June", "age":27}]

print "name: %10s, age: %10d" %(students[0]["name"], students[0]["age"])

print "name: %-10s, age: %-10d" %(students[1]["name"], students[1]["age"])

print "name: %*s, age: %0*d" %(10, students[2]["name"], 10, students[2]["age"])

# dict参数

for student in students:

print "%(name)s is %(age)d years old" %student

代码输出为:

对于Python的格式化操作符,不仅可以接受tuple类型的参数,也可以支持dict,象上面代码的最后一部分,那么格式化字符串中就可以直接使用"%(key)s"(这里的s根据具体类型改变)的方式表示dict中对应的value了。

字符串模板

其实,在Python中进行字符串的格式化,除了格式化操作符,还可以使用string模块中的字符串模板(Template)对象。下面就主要看看Template对象的substitute()方法:

from string import Template

s = Template("Hi, $name! $name is learning $language")

print s.substitute(name="Wilber", language="Python")

d = {"name": "Will", "language": "C#"}

print s.substitute(d)

# 用$$表示$符号

s = Template("This book ($bname) is 17$$")

print s.substitute(bname="TCP/IP")

代码结果为:

字符串内建函数format()

Python2.6开始,新增了一种格式化字符串的函数str.format(),通过这个函数同样可以对字符串进行格式化处理。在format()函数中,使用“{}”符号来当作格式化操作符。

下面直接通过一些简单的例子演示format()函数的基本使用:

# 位置参数

print "{0} is {1} years old".format("Wilber", 28)

print "{} is {} years old".format("Wilber", 28)

print "Hi, {0}! {0} is {1} years old".format("Wilber", 28)

# 关键字参数

print "{name} is {age} years old".format(name = "Wilber", age = 28)

# 下标参数

li = ["Wilber", 28]

print "{0[0]} is {0[1]} years old".format(li)

# 填充与对齐

# ^、<、>分别是居中、左对齐、右对齐,后面带宽度

# :号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充

print '{:>8}'.format('3.14')

print '{:<8}'.format('3.14')

print '{:^8}'.format('3.14')

print '{:0>8}'.format('3.14')

print '{:a>8}'.format('3.14')

# 浮点数精度

print '{:.4f}'.format(3.1415926)

print '{:0>10.4f}'.format(3.1415926)

# 进制

# b、d、o、x分别是二进制、十进制、八进制、十六进制

print '{:b}'.format(11)

print '{:d}'.format(11)

print '{:o}'.format(11)

print '{:x}'.format(11)

print '{:#x}'.format(11)

print '{:#X}'.format(11)

# 千位分隔符

print '{:,}'.format(15700000000)

str的内建函数

在最开始的时候,Python有一个专门的string模块,要使用string的方法要先import这个模块。从Python2.0开始, 为了方便使用,str类型添加了很多内建函数,这些函数可以实现跟string模块中函数相同的功能,也就是说,只要S是一个字符串对象就可以直接使用内建函数,而不用import。

对于字符串的格式化处理,也可以考虑使用str的其他内建函数:

>>> dir(str)

['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__

format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__get

slice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mo

d__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__',

'__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook

__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center',

'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index

', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper',

'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', '

rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', '

strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

下面整理出来了一些常用的str类型的内建函数:

# 小写

S.lower()

# 大写

S.upper()

#大小写互换

S.swapcase()

# 首字母大写

S.capitalize()

# 输出width个字符,S左对齐,不足部分用fillchar填充,默认的为空格。

S.ljust(width,[fillchar])

# 右对齐

S.rjust(width,[fillchar])

# 中间对齐

S.center(width, [fillchar])

# 返回S中出现substr的第一个字母的标号,如果S中没有substr则返回-1。start和end作用就相当于在S[start:end]中搜索

S.find(substr, [start, [end]])

# 返回S中最后出现的substr的第一个字母的标号,如果S中没有substr则返回-1,也就是说从右边算起的第一次出现的substr的首字母标号

S.rfind(substr, [start, [end]])

# 计算substr在S中出现的次数

S.count(substr, [start, [end]])

#把S中的oldstar替换为newstr,count为替换次数

S.replace(oldstr, newstr, [count])

# 把S中前后chars中有的字符全部去掉,可以理解为把S前后chars替换为None

S.strip([chars])

S.lstrip([chars])

S.rstrip([chars])

# 以sep为分隔符,把S分成一个list。maxsplit表示分割的次数。默认的分割符为空白字符

S.split([sep, [maxsplit]])

# 把seq代表的字符串序列,用S连接起来

S.join(seq)

总结

本文整理了一些格式化字符,以及一些辅助指令,结合格式化操作符(%),就可以生成特定格式的字符串了。也可以使用字符串模板来进行字符串格式化。

python转化为字符串格式_Python格式化字符串~转相关推荐

  1. python字符串输入_Python输入字符串的方法和实例代码

    Python怎么输入字符串 首先,要显示字符串,直接 print(字符串) 就可以显示了. 字符串可以用单引号或者双引号,python中没有字符类型. 多个字符串直接连着写,就表示连接,字符串内部的转 ...

  2. python格式化字符串漏洞_Python新型字符串格式漏洞分析及解决方案

    最近一个python字符串格式化的漏洞引起了我的注意,今天就来说一下Python引入的一种格式化字符串的新型语法的安全漏洞进行了深入的分析,并提供了相应的安全解决方案. 当我们对不可信的用户输入使用s ...

  3. python打印字符串格式_Python字符串三种格式化输出

    字符串格式化输出是python非常重要的基础语法,今天就把三种格式化输出做一个简单的总结,希望对大家有帮助. 格式化输出:内容按照一定格式要求进行输出. 1.使用占位符%输出 python2.6版本之 ...

  4. python 格式化字符串_Python格式化字符串常用操作

    前言 字符串的格式化.以及增.删.改.查.并.分,无论写什么程序都是一个非常重要的操作,熟练的使用可以让程序变得整洁,对于输出结果的格式能很好的统一性. 0 1 格式化字符串 在python的2.x版 ...

  5. python文档字符串格式_Python字符串及文本模式方法详解

    一.你想在字符串中搜索和匹配指定的文本模式 遗漏点:re模块其实也是帮助我们进行字符串处理的重要工具,我之前总是想着用内建的函数来处理,其实如果是复杂的文本和数据结构,re模块能帮助我们处理很多信息. ...

  6. python怎么让输出居中_python格式化输出字符串居中

    Q1:python字符串格式化什么意思 在python中也有类似于c中的printf()的格式输出标记.在python中格式化输出字符串使用的是%运算符,通用的形式为 格式标记字符串 % 要输出的值组 ...

  7. python格式化字符_Python格式化字符串

    一.通过%来格式化输出. 格式化字符串时,Python使用一个字符串作为模板.模板中有格式符,这些格式符为真实值预留位置,并说明真实数值应该呈现的格式.Python用一个tuple将多个值传递给模板, ...

  8. python 将json字符串格式数据格式化保存到本地文件

    我们在调用一些api的时候,经常对得到返回结果为json字符串格式的数据,但是在输出的时候,内容全是在一行 而我们如果只是使用json.dumps()方法的时候,类似于下面 最后的结果就会是这样 可以 ...

  9. python秒数转化为时间格式_python将秒数转化为时间格式的实例

    python将秒数转化为时间格式的实例 1.转化成时间格式 seconds =35400 m, s = divmod(seconds, 60) h, m = divmod(m, 60) print(& ...

最新文章

  1. 【干货】理发师都知道的产品经理最容易犯的几个错误
  2. idea实现抽象类的所有抽象方法_深入理解Java的接口和抽象类
  3. 云炬Android开发笔记 12基于WebView的混合App框架设计(包含浏览器与原生请求Cookie的处理)
  4. Shell(6)——if语句
  5. 颠覆:链表在删除和插入的效率一定优于数组吗?
  6. apollo 配置中心_apollo-1:apollo配置中心单机模拟分布式部署
  7. 微服务和Java EE
  8. vs里安装了mysql吗_vs2017安装 MySQL for Visual Studio 1.2.
  9. thinkphp josn mysql_ThinkPHP:JSON字段类型的使用(ORM)
  10. Linux工作笔记034---linux tail命令详解_linux在vi中查找字符串
  11. 跨域详解之-----Jsonp跨域
  12. 1.一个模型,帮你找到真正热爱的工作
  13. 用Squid和DNSPod打造自己的CDN详细教程
  14. max7456 C语言,用于MAX7456随屏显示器SPI接口的C程序
  15. linux系统的特点有什么
  16. java 视频压缩_Java 压缩视频(无需安装插件)
  17. 【电源专题】开关电源的控制器和稳压器的区别
  18. 小心看上去平平无奇的陷阱:如何防范高级渣?
  19. 大数据与个人征信市场发展
  20. P2600 [ZJOI2008]瞭望塔(半平面交)

热门文章

  1. Java8中的HashMap分析
  2. TaskWarrior windows版制作
  3. Codevs 1005 生日礼物
  4. 练习一下linux中的list函数。
  5. Vita Helper v0.08 Build 20140722
  6. jeecg智能开发平台参与-2013年度中国优秀开源项目评比
  7. 解决robotframework安装时提示wxPython not found问题
  8. Oracle用户密码过期和用户被锁解决方法【转】
  9. 解决GitHub加载不出图片问题
  10. 使用elasticsearch遇到的一些问题以及解决方法(不断更新)