Python 字符串格式化

时间:2022-02-01 03:19:18

Python 字符串格式化

Python的字符串格式化有两种方式: 百分号方式、format方式

百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存

一、百分号方式

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

  • (name)      可选,用于选择指定的key

  • flags          可选,可供选择的值有:

    • +       右对齐;正数前加正好,负数前加负号;

    • -        左对齐;正数前无符号,负数前加负号;

    • 空格    右对齐;正数前加空格,负数前加负号;

    • 0        右对齐;正数前无符号,负数前加负号;用0填充空白处

  • width         可选,占有宽度

  • .precision   可选,小数点后保留的位数

  • typecode    必选

    • s,获取传入对象的__str__方法的返回值,并将其格式化到指定位置

    • r,获取传入对象的__repr__方法的返回值,并将其格式化到指定位置

    • c,整数:将数字转换成其unicode对应的值,10进制范围为 0 <= i <= 1114111(py27则只支持0-255);字符:将字符添加到指定位置

    • o,将整数转换成 八  进制表示,并将其格式化到指定位置

    • x,将整数转换成十六进制表示,并将其格式化到指定位置

    • d,将整数、浮点数转换成 十 进制表示,并将其格式化到指定位置

    • e,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(小写e)

    • E,将整数、浮点数转换成科学计数法,并将其格式化到指定位置(大写E)

    • f, 将整数、浮点数转换成浮点数表示,并将其格式化到指定位置(默认保留小数点后6位)

    • F,同上

    • g,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是e;)

    • G,自动调整将整数、浮点数转换成 浮点型或科学计数法表示(超过6位数用科学计数法),并将其格式化到指定位置(如果是科学计数则是E;)

    • %,当字符串中存在格式化标志时,需要用 %%表示一个百分号

注:Python中百分号格式化是不存在自动将整数转换成二进制表示的方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
>>> print ("my name is %s" %"kingway")
my name is kingway
>>> print ("my name is %(name)s" % {"name": "Kingway"})
my name is Kingway
>>> print ("this price is %d million" %(3.1518))
this price is 3 million
>>> print ("this price is %f million" %(3.1518))
this price is 3.151800 million
>>> print ("this price is %.2f million" %(3.1518))
this price is 3.15 million
>>> print ("this percent is %.2f%%" %(32.78))
this percent is 32.78%
>>> print("%-15s%-15s%-15s\n%-15s%-15s%-15s" % ("name", "addr", "phone", "Kingway", "Hangzhou", "18888888888"))
name           addr           phone         
Kingway        Hangzhou       18888888888

二、Format方式

[[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位)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
>>> print ("my name is {}, i am work in {}".format("Kingway", "Hangzhou"))
my name is Kingway, i am work in Hangzhou
>>> print ("my name is {0}, study {1}, come on {0}".format("Kingway", "Python"))
my name is Kingway, study Python, come on Kingway
>>> print ("my name is {0}, study {1}, come on {0}".format(*["Kingway","Python"]))
my name is Kingway, study Python, come on Kingway
>>> print ("my name is {name}, i am work in {addr}".format(name="Kingway",addr="Hangzhou"))
my name is Kingway, i am work in Hangzhou
>>> print ("my name is {name}, i am work in {addr}".format(**{"name":"Kingway","addr":"Hangzhou"}))
my name is Kingway, i am work in Hangzhou
>>> print ("num: {:b},{:o},{:d},{:x},{:X},{:%}".format(15,15,15,15,15,15))
num: 1111,17,15,f,F,1500.000000%
>>> print ("num: {0:b},{0:o},{0:d},{0:x},{0:X},{0:%}".format(15))
num: 1111,17,15,f,F,1500.000000%
>>> print ("this price is {:,}".format(412342523))
this price is 412,342,523
>>> print ("{:^15}{:^15}{:^15}\n{:^15}{:^15}{:^15}".format("name","addr","phone","Kingway","Hangzhou","18888888888"))
     name           addr           phone    
    Kingway       Hangzhou      18888888888 
>>> print ("{:=^30}".format("Information System"))
======Information System======

 

Python 字符串格式化的更多相关文章

  1. python字符串格式化 &percnt;操作符 &lbrace;&rcub;操作符---总结

    Python字符串格式化 (%占位操作符) 在许多编程语言中都包含有格式化字符串的功能,比如C和Fortran语言中的格式化输入输出.Python中内置有对字符串进行格式化的操作 %. 模板 格式化字 ...

  2. 【转】Python字符串格式化

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

  3. 7&period; python 字符串格式化方法(2)

    7. python 字符串格式化方法(2) 紧接着上一章节,这一章节我们聊聊怎样添加具体格式化 就是指定替换字段的大小.对齐方式和特定的类型编码,结构如下: {fieldname!conversion ...

  4. 7&period; python 字符串格式化方法(1)

    7. python 字符串格式化方法(1) 承接上一章节,我们这一节来说说字符串格式化的另一种方法,就是调用format() >>> template='{0},{1} and {2 ...

  5. 6&period; python 字符串格式化表达式

    6. python 字符串格式化表达式 字符串格式化允许在一个单个的步骤中对一个字符串执行多个特定类型的替换 特别是给用户提示的时候,格式化非常方便 实现方法: 1.格式化表达式,类似于c语言的pri ...

  6. python字符串格式化--dict传参

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python字符串格式化--dict传参 print "I'm %(name)s. I'm %(a ...

  7. Python学习:12&period;Python字符串格式化

    字符串格式化 讲解Python这么久,也没有讲解Python的字符串的格式化,那我们今天就来了解一下python字符串格式化的强大之处. 首先我们先理解一下为什么要有字符串的格式化,就是为了方便字符串 ...

  8. Python字符串格式化

    一.使用格式化符来格式化字符串: Python支持的所有格式化符 格式化符 意义 'd' 返回要格式化对象的十进制表示,如果可以 'i' 返回要格式化对象的十进制表示,如果可以 'o' 返回要格式化对 ...

  9. python字符串格式化方法 format函数的使用

      python从2.6开始支持format,新的更加容易读懂的字符串格式化方法, 从原来的% 模式变成新的可读性更强的 花括号声明{}.用于渲染前的参数引用声明, 花括号里可以用数字代表引用参数的序 ...

随机推荐

  1. VS2015企业版&comma;社区版&comma;专业版详细对比

    VS2015 微软出了3个大版本,其实在前天晚上就放出了三个版本的对比说明.,但是昨天挂掉了..今天特意去看了..截取了自己觉得比较重要的分享一下. 首先我们最常用的 诊断调试工具 其次测试工具(区别 ...

  2. 模拟MVC-WebForm实现ModelBinding

    (一) 前言                                                                           用ASP.NET MVC的时候,我们都 ...

  3. Java 7 Concurrency Cookbook 翻译 序言

    在日常的Java代码开发过程中,很难免地有对多线程的需求,掌握java多线程和并发的机制也是Java程序员写出更健壮和高效代码的基础.笔者找寻国内已出版的关于Java多线程和并发的的中文书籍和翻译书籍 ...

  4. Multiple View Geometry in Computer Vision Second Edition by Richard Hartley 读书笔记(一)

    var bdots = "../" var sequence = [ 'l1', 'l2', 'l3', 'l4' ]; Chapter1是个总览,引出了射影几何的概念,通过在欧式 ...

  5. Hadoop源码解析之&colon; TextInputFormat如何处理跨split的行

    我们知道hadoop将数据给到map进行处理前会使用InputFormat对数据进行两方面的预处理: 对输入数据进行切分,生成一组split,一个split会分发给一个mapper进行处理. 针对每个 ...

  6. scrapy-redis

    scrapy_redis的大概思路:将爬取的url通过 hashlin.sha1生成唯一的指纹,持久化存入redis,之后的url判断是否已经存在,达到去重的效果 下载scrapy-redis git ...

  7. html&sol;css&sol;js-layer弹出层的初次使用

    学习前端有时很多时候要用到弹出层,原生的js写有些麻烦,而且不美观,基于jQuery的弹出层组件layer应运而生,近些年来备受青睐.官网上有使用教程,但当初用的时候还是糊里糊涂,今天来记录一下lay ...

  8. 《算法》第三章部分程序 part 6

    ▶ 书中第三章部分程序,加上自己补充的代码,包含双向索引表.文建索引.稀疏向量类型 ● 双向索引表 package package01; import edu.princeton.cs.algs4.S ...

  9. python学习 day19 &lpar;3月26日&rpar;----&lpar;对象组合)

    深谙:非常透彻地了解:熟悉内中情形.谙,读作‘ān’ 熟悉. 1.面向对象作用:规划了代码中的函数处理的是哪一类问题 解决了传参的问题 方便扩展 方便重用 2.类的定义和使用类当中有哪些成员 ''' ...

  10. Java设计模式之适配器设计模式&lpar;项目升级案例&rpar;

    今天是我学习到Java设计模式中的第三个设计模式了,但是天气又开始变得*起来,对于我这个凉爽惯了的青藏人来说,又是非常闹心的一件事儿,好了不管怎么样,目标还是目标(争取把23种Java设计模式接触一 ...